In [1]:
import os
import pandas as pd
import numpy as np
import sklearn
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.graph_objects as go
from IPython import display
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import LabelEncoder, MinMaxScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, accuracy_score, confusion_matrix
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import f_oneway
from scipy.stats import chi2_contingency
import warnings
warnings.simplefilter(action="ignore", category=FutureWarning)
In [2]:
pd.set_option('display.max_columns', 12)
pd.set_option('display.max_rows', 1000)
Loading training data from the CSV¶
In [3]:
#Importing the dataset
dataset = pd.read_csv('heart.csv')
df = pd.DataFrame(dataset)
df
Out[3]:
| Age | Sex | ChestPainType | RestingBP | Cholesterol | FastingBS | RestingECG | MaxHR | ExerciseAngina | Oldpeak | ST_Slope | HeartDisease | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 40 | M | ATA | 140 | 289 | 0 | Normal | 172 | N | 0.0 | Up | 0 |
| 1 | 49 | F | NAP | 160 | 180 | 0 | Normal | 156 | N | 1.0 | Flat | 1 |
| 2 | 37 | M | ATA | 130 | 283 | 0 | ST | 98 | N | 0.0 | Up | 0 |
| 3 | 48 | F | ASY | 138 | 214 | 0 | Normal | 108 | Y | 1.5 | Flat | 1 |
| 4 | 54 | M | NAP | 150 | 195 | 0 | Normal | 122 | N | 0.0 | Up | 0 |
| 5 | 39 | M | NAP | 120 | 339 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 6 | 45 | F | ATA | 130 | 237 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 7 | 54 | M | ATA | 110 | 208 | 0 | Normal | 142 | N | 0.0 | Up | 0 |
| 8 | 37 | M | ASY | 140 | 207 | 0 | Normal | 130 | Y | 1.5 | Flat | 1 |
| 9 | 48 | F | ATA | 120 | 284 | 0 | Normal | 120 | N | 0.0 | Up | 0 |
| 10 | 37 | F | NAP | 130 | 211 | 0 | Normal | 142 | N | 0.0 | Up | 0 |
| 11 | 58 | M | ATA | 136 | 164 | 0 | ST | 99 | Y | 2.0 | Flat | 1 |
| 12 | 39 | M | ATA | 120 | 204 | 0 | Normal | 145 | N | 0.0 | Up | 0 |
| 13 | 49 | M | ASY | 140 | 234 | 0 | Normal | 140 | Y | 1.0 | Flat | 1 |
| 14 | 42 | F | NAP | 115 | 211 | 0 | ST | 137 | N | 0.0 | Up | 0 |
| 15 | 54 | F | ATA | 120 | 273 | 0 | Normal | 150 | N | 1.5 | Flat | 0 |
| 16 | 38 | M | ASY | 110 | 196 | 0 | Normal | 166 | N | 0.0 | Flat | 1 |
| 17 | 43 | F | ATA | 120 | 201 | 0 | Normal | 165 | N | 0.0 | Up | 0 |
| 18 | 60 | M | ASY | 100 | 248 | 0 | Normal | 125 | N | 1.0 | Flat | 1 |
| 19 | 36 | M | ATA | 120 | 267 | 0 | Normal | 160 | N | 3.0 | Flat | 1 |
| 20 | 43 | F | TA | 100 | 223 | 0 | Normal | 142 | N | 0.0 | Up | 0 |
| 21 | 44 | M | ATA | 120 | 184 | 0 | Normal | 142 | N | 1.0 | Flat | 0 |
| 22 | 49 | F | ATA | 124 | 201 | 0 | Normal | 164 | N | 0.0 | Up | 0 |
| 23 | 44 | M | ATA | 150 | 288 | 0 | Normal | 150 | Y | 3.0 | Flat | 1 |
| 24 | 40 | M | NAP | 130 | 215 | 0 | Normal | 138 | N | 0.0 | Up | 0 |
| 25 | 36 | M | NAP | 130 | 209 | 0 | Normal | 178 | N | 0.0 | Up | 0 |
| 26 | 53 | M | ASY | 124 | 260 | 0 | ST | 112 | Y | 3.0 | Flat | 0 |
| 27 | 52 | M | ATA | 120 | 284 | 0 | Normal | 118 | N | 0.0 | Up | 0 |
| 28 | 53 | F | ATA | 113 | 468 | 0 | Normal | 127 | N | 0.0 | Up | 0 |
| 29 | 51 | M | ATA | 125 | 188 | 0 | Normal | 145 | N | 0.0 | Up | 0 |
| 30 | 53 | M | NAP | 145 | 518 | 0 | Normal | 130 | N | 0.0 | Flat | 1 |
| 31 | 56 | M | NAP | 130 | 167 | 0 | Normal | 114 | N | 0.0 | Up | 0 |
| 32 | 54 | M | ASY | 125 | 224 | 0 | Normal | 122 | N | 2.0 | Flat | 1 |
| 33 | 41 | M | ASY | 130 | 172 | 0 | ST | 130 | N | 2.0 | Flat | 1 |
| 34 | 43 | F | ATA | 150 | 186 | 0 | Normal | 154 | N | 0.0 | Up | 0 |
| 35 | 32 | M | ATA | 125 | 254 | 0 | Normal | 155 | N | 0.0 | Up | 0 |
| 36 | 65 | M | ASY | 140 | 306 | 1 | Normal | 87 | Y | 1.5 | Flat | 1 |
| 37 | 41 | F | ATA | 110 | 250 | 0 | ST | 142 | N | 0.0 | Up | 0 |
| 38 | 48 | F | ATA | 120 | 177 | 1 | ST | 148 | N | 0.0 | Up | 0 |
| 39 | 48 | F | ASY | 150 | 227 | 0 | Normal | 130 | Y | 1.0 | Flat | 0 |
| 40 | 54 | F | ATA | 150 | 230 | 0 | Normal | 130 | N | 0.0 | Up | 0 |
| 41 | 54 | F | NAP | 130 | 294 | 0 | ST | 100 | Y | 0.0 | Flat | 1 |
| 42 | 35 | M | ATA | 150 | 264 | 0 | Normal | 168 | N | 0.0 | Up | 0 |
| 43 | 52 | M | NAP | 140 | 259 | 0 | ST | 170 | N | 0.0 | Up | 0 |
| 44 | 43 | M | ASY | 120 | 175 | 0 | Normal | 120 | Y | 1.0 | Flat | 1 |
| 45 | 59 | M | NAP | 130 | 318 | 0 | Normal | 120 | Y | 1.0 | Flat | 0 |
| 46 | 37 | M | ASY | 120 | 223 | 0 | Normal | 168 | N | 0.0 | Up | 0 |
| 47 | 50 | M | ATA | 140 | 216 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 48 | 36 | M | NAP | 112 | 340 | 0 | Normal | 184 | N | 1.0 | Flat | 0 |
| 49 | 41 | M | ASY | 110 | 289 | 0 | Normal | 170 | N | 0.0 | Flat | 1 |
| 50 | 50 | M | ASY | 130 | 233 | 0 | Normal | 121 | Y | 2.0 | Flat | 1 |
| 51 | 47 | F | ASY | 120 | 205 | 0 | Normal | 98 | Y | 2.0 | Flat | 1 |
| 52 | 45 | M | ATA | 140 | 224 | 1 | Normal | 122 | N | 0.0 | Up | 0 |
| 53 | 41 | F | ATA | 130 | 245 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 54 | 52 | F | ASY | 130 | 180 | 0 | Normal | 140 | Y | 1.5 | Flat | 0 |
| 55 | 51 | F | ATA | 160 | 194 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 56 | 31 | M | ASY | 120 | 270 | 0 | Normal | 153 | Y | 1.5 | Flat | 1 |
| 57 | 58 | M | NAP | 130 | 213 | 0 | ST | 140 | N | 0.0 | Flat | 1 |
| 58 | 54 | M | ASY | 150 | 365 | 0 | ST | 134 | N | 1.0 | Up | 0 |
| 59 | 52 | M | ASY | 112 | 342 | 0 | ST | 96 | Y | 1.0 | Flat | 1 |
| 60 | 49 | M | ATA | 100 | 253 | 0 | Normal | 174 | N | 0.0 | Up | 0 |
| 61 | 43 | F | NAP | 150 | 254 | 0 | Normal | 175 | N | 0.0 | Up | 0 |
| 62 | 45 | M | ASY | 140 | 224 | 0 | Normal | 144 | N | 0.0 | Up | 0 |
| 63 | 46 | M | ASY | 120 | 277 | 0 | Normal | 125 | Y | 1.0 | Flat | 1 |
| 64 | 50 | F | ATA | 110 | 202 | 0 | Normal | 145 | N | 0.0 | Up | 0 |
| 65 | 37 | F | ATA | 120 | 260 | 0 | Normal | 130 | N | 0.0 | Up | 0 |
| 66 | 45 | F | ASY | 132 | 297 | 0 | Normal | 144 | N | 0.0 | Up | 0 |
| 67 | 32 | M | ATA | 110 | 225 | 0 | Normal | 184 | N | 0.0 | Up | 0 |
| 68 | 52 | M | ASY | 160 | 246 | 0 | ST | 82 | Y | 4.0 | Flat | 1 |
| 69 | 44 | M | ASY | 150 | 412 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 70 | 57 | M | ATA | 140 | 265 | 0 | ST | 145 | Y | 1.0 | Flat | 1 |
| 71 | 44 | M | ATA | 130 | 215 | 0 | Normal | 135 | N | 0.0 | Up | 0 |
| 72 | 52 | M | ASY | 120 | 182 | 0 | Normal | 150 | N | 0.0 | Flat | 1 |
| 73 | 44 | F | ASY | 120 | 218 | 0 | ST | 115 | N | 0.0 | Up | 0 |
| 74 | 55 | M | ASY | 140 | 268 | 0 | Normal | 128 | Y | 1.5 | Flat | 1 |
| 75 | 46 | M | NAP | 150 | 163 | 0 | Normal | 116 | N | 0.0 | Up | 0 |
| 76 | 32 | M | ASY | 118 | 529 | 0 | Normal | 130 | N | 0.0 | Flat | 1 |
| 77 | 35 | F | ASY | 140 | 167 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 78 | 52 | M | ATA | 140 | 100 | 0 | Normal | 138 | Y | 0.0 | Up | 0 |
| 79 | 49 | M | ASY | 130 | 206 | 0 | Normal | 170 | N | 0.0 | Flat | 1 |
| 80 | 55 | M | NAP | 110 | 277 | 0 | Normal | 160 | N | 0.0 | Up | 0 |
| 81 | 54 | M | ATA | 120 | 238 | 0 | Normal | 154 | N | 0.0 | Up | 0 |
| 82 | 63 | M | ASY | 150 | 223 | 0 | Normal | 115 | N | 0.0 | Flat | 1 |
| 83 | 52 | M | ATA | 160 | 196 | 0 | Normal | 165 | N | 0.0 | Up | 0 |
| 84 | 56 | M | ASY | 150 | 213 | 1 | Normal | 125 | Y | 1.0 | Flat | 1 |
| 85 | 66 | M | ASY | 140 | 139 | 0 | Normal | 94 | Y | 1.0 | Flat | 1 |
| 86 | 65 | M | ASY | 170 | 263 | 1 | Normal | 112 | Y | 2.0 | Flat | 1 |
| 87 | 53 | F | ATA | 140 | 216 | 0 | Normal | 142 | Y | 2.0 | Flat | 0 |
| 88 | 43 | M | TA | 120 | 291 | 0 | ST | 155 | N | 0.0 | Flat | 1 |
| 89 | 55 | M | ASY | 140 | 229 | 0 | Normal | 110 | Y | 0.5 | Flat | 0 |
| 90 | 49 | F | ATA | 110 | 208 | 0 | Normal | 160 | N | 0.0 | Up | 0 |
| 91 | 39 | M | ASY | 130 | 307 | 0 | Normal | 140 | N | 0.0 | Up | 0 |
| 92 | 52 | F | ATA | 120 | 210 | 0 | Normal | 148 | N | 0.0 | Up | 0 |
| 93 | 48 | M | ASY | 160 | 329 | 0 | Normal | 92 | Y | 1.5 | Flat | 1 |
| 94 | 39 | F | NAP | 110 | 182 | 0 | ST | 180 | N | 0.0 | Up | 0 |
| 95 | 58 | M | ASY | 130 | 263 | 0 | Normal | 140 | Y | 2.0 | Flat | 1 |
| 96 | 43 | M | ATA | 142 | 207 | 0 | Normal | 138 | N | 0.0 | Up | 0 |
| 97 | 39 | M | NAP | 160 | 147 | 1 | Normal | 160 | N | 0.0 | Up | 0 |
| 98 | 56 | M | ASY | 120 | 85 | 0 | Normal | 140 | N | 0.0 | Up | 0 |
| 99 | 41 | M | ATA | 125 | 269 | 0 | Normal | 144 | N | 0.0 | Up | 0 |
| 100 | 65 | M | ASY | 130 | 275 | 0 | ST | 115 | Y | 1.0 | Flat | 1 |
| 101 | 51 | M | ASY | 130 | 179 | 0 | Normal | 100 | N | 0.0 | Up | 0 |
| 102 | 40 | F | ASY | 150 | 392 | 0 | Normal | 130 | N | 2.0 | Flat | 1 |
| 103 | 40 | M | ASY | 120 | 466 | 1 | Normal | 152 | Y | 1.0 | Flat | 1 |
| 104 | 46 | M | ASY | 118 | 186 | 0 | Normal | 124 | N | 0.0 | Flat | 1 |
| 105 | 57 | M | ATA | 140 | 260 | 1 | Normal | 140 | N | 0.0 | Up | 0 |
| 106 | 48 | F | ASY | 120 | 254 | 0 | ST | 110 | N | 0.0 | Up | 0 |
| 107 | 34 | M | ATA | 150 | 214 | 0 | ST | 168 | N | 0.0 | Up | 0 |
| 108 | 50 | M | ASY | 140 | 129 | 0 | Normal | 135 | N | 0.0 | Up | 0 |
| 109 | 39 | M | ATA | 190 | 241 | 0 | Normal | 106 | N | 0.0 | Up | 0 |
| 110 | 59 | F | ATA | 130 | 188 | 0 | Normal | 124 | N | 1.0 | Flat | 0 |
| 111 | 57 | M | ASY | 150 | 255 | 0 | Normal | 92 | Y | 3.0 | Flat | 1 |
| 112 | 47 | M | ASY | 140 | 276 | 1 | Normal | 125 | Y | 0.0 | Up | 0 |
| 113 | 38 | M | ATA | 140 | 297 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 114 | 49 | F | NAP | 130 | 207 | 0 | ST | 135 | N | 0.0 | Up | 0 |
| 115 | 33 | F | ASY | 100 | 246 | 0 | Normal | 150 | Y | 1.0 | Flat | 1 |
| 116 | 38 | M | ASY | 120 | 282 | 0 | Normal | 170 | N | 0.0 | Flat | 1 |
| 117 | 59 | F | ASY | 130 | 338 | 1 | ST | 130 | Y | 1.5 | Flat | 1 |
| 118 | 35 | F | TA | 120 | 160 | 0 | ST | 185 | N | 0.0 | Up | 0 |
| 119 | 34 | M | TA | 140 | 156 | 0 | Normal | 180 | N | 0.0 | Flat | 1 |
| 120 | 47 | F | NAP | 135 | 248 | 1 | Normal | 170 | N | 0.0 | Flat | 1 |
| 121 | 52 | F | NAP | 125 | 272 | 0 | Normal | 139 | N | 0.0 | Up | 0 |
| 122 | 46 | M | ASY | 110 | 240 | 0 | ST | 140 | N | 0.0 | Up | 0 |
| 123 | 58 | F | ATA | 180 | 393 | 0 | Normal | 110 | Y | 1.0 | Flat | 1 |
| 124 | 58 | M | ATA | 130 | 230 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 125 | 54 | M | ATA | 120 | 246 | 0 | Normal | 110 | N | 0.0 | Up | 0 |
| 126 | 34 | F | ATA | 130 | 161 | 0 | Normal | 190 | N | 0.0 | Up | 0 |
| 127 | 48 | F | ASY | 108 | 163 | 0 | Normal | 175 | N | 2.0 | Up | 0 |
| 128 | 54 | F | ATA | 120 | 230 | 1 | Normal | 140 | N | 0.0 | Up | 0 |
| 129 | 42 | M | NAP | 120 | 228 | 0 | Normal | 152 | Y | 1.5 | Flat | 0 |
| 130 | 38 | M | NAP | 145 | 292 | 0 | Normal | 130 | N | 0.0 | Up | 0 |
| 131 | 46 | M | ASY | 110 | 202 | 0 | Normal | 150 | Y | 0.0 | Flat | 1 |
| 132 | 56 | M | ASY | 170 | 388 | 0 | ST | 122 | Y | 2.0 | Flat | 1 |
| 133 | 56 | M | ASY | 150 | 230 | 0 | ST | 124 | Y | 1.5 | Flat | 1 |
| 134 | 61 | F | ASY | 130 | 294 | 0 | ST | 120 | Y | 1.0 | Flat | 0 |
| 135 | 49 | M | NAP | 115 | 265 | 0 | Normal | 175 | N | 0.0 | Flat | 1 |
| 136 | 43 | F | ATA | 120 | 215 | 0 | ST | 175 | N | 0.0 | Up | 0 |
| 137 | 39 | M | ATA | 120 | 241 | 0 | ST | 146 | N | 2.0 | Up | 0 |
| 138 | 54 | M | ASY | 140 | 166 | 0 | Normal | 118 | Y | 0.0 | Flat | 1 |
| 139 | 43 | M | ASY | 150 | 247 | 0 | Normal | 130 | Y | 2.0 | Flat | 1 |
| 140 | 52 | M | ASY | 160 | 331 | 0 | Normal | 94 | Y | 2.5 | Flat | 1 |
| 141 | 50 | M | ASY | 140 | 341 | 0 | ST | 125 | Y | 2.5 | Flat | 1 |
| 142 | 47 | M | ASY | 160 | 291 | 0 | ST | 158 | Y | 3.0 | Flat | 1 |
| 143 | 53 | M | ASY | 140 | 243 | 0 | Normal | 155 | N | 0.0 | Up | 0 |
| 144 | 56 | F | ATA | 120 | 279 | 0 | Normal | 150 | N | 1.0 | Flat | 1 |
| 145 | 39 | M | ASY | 110 | 273 | 0 | Normal | 132 | N | 0.0 | Up | 0 |
| 146 | 42 | M | ATA | 120 | 198 | 0 | Normal | 155 | N | 0.0 | Up | 0 |
| 147 | 43 | F | ATA | 120 | 249 | 0 | ST | 176 | N | 0.0 | Up | 0 |
| 148 | 50 | M | ATA | 120 | 168 | 0 | Normal | 160 | N | 0.0 | Up | 0 |
| 149 | 54 | M | ASY | 130 | 603 | 1 | Normal | 125 | Y | 1.0 | Flat | 1 |
| 150 | 39 | M | ATA | 130 | 215 | 0 | Normal | 120 | N | 0.0 | Up | 0 |
| 151 | 48 | M | ATA | 100 | 159 | 0 | Normal | 100 | N | 0.0 | Up | 0 |
| 152 | 40 | M | ATA | 130 | 275 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 153 | 55 | M | ASY | 120 | 270 | 0 | Normal | 140 | N | 0.0 | Up | 0 |
| 154 | 41 | M | ATA | 120 | 291 | 0 | ST | 160 | N | 0.0 | Up | 0 |
| 155 | 56 | M | ASY | 155 | 342 | 1 | Normal | 150 | Y | 3.0 | Flat | 1 |
| 156 | 38 | M | ASY | 110 | 190 | 0 | Normal | 150 | Y | 1.0 | Flat | 1 |
| 157 | 49 | M | ASY | 140 | 185 | 0 | Normal | 130 | N | 0.0 | Up | 0 |
| 158 | 44 | M | ASY | 130 | 290 | 0 | Normal | 100 | Y | 2.0 | Flat | 1 |
| 159 | 54 | M | ATA | 160 | 195 | 0 | ST | 130 | N | 1.0 | Up | 0 |
| 160 | 59 | M | ASY | 140 | 264 | 1 | LVH | 119 | Y | 0.0 | Flat | 1 |
| 161 | 49 | M | ASY | 128 | 212 | 0 | Normal | 96 | Y | 0.0 | Flat | 1 |
| 162 | 47 | M | ATA | 160 | 263 | 0 | Normal | 174 | N | 0.0 | Up | 0 |
| 163 | 42 | M | ATA | 120 | 196 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 164 | 52 | F | ATA | 140 | 225 | 0 | Normal | 140 | N | 0.0 | Up | 0 |
| 165 | 46 | M | TA | 140 | 272 | 1 | Normal | 175 | N | 2.0 | Flat | 1 |
| 166 | 50 | M | ASY | 140 | 231 | 0 | ST | 140 | Y | 5.0 | Flat | 1 |
| 167 | 48 | M | ATA | 140 | 238 | 0 | Normal | 118 | N | 0.0 | Up | 0 |
| 168 | 58 | M | ASY | 135 | 222 | 0 | Normal | 100 | N | 0.0 | Up | 0 |
| 169 | 58 | M | NAP | 140 | 179 | 0 | Normal | 160 | N | 0.0 | Up | 0 |
| 170 | 29 | M | ATA | 120 | 243 | 0 | Normal | 160 | N | 0.0 | Up | 0 |
| 171 | 40 | M | NAP | 140 | 235 | 0 | Normal | 188 | N | 0.0 | Up | 0 |
| 172 | 53 | M | ATA | 140 | 320 | 0 | Normal | 162 | N | 0.0 | Up | 0 |
| 173 | 49 | M | NAP | 140 | 187 | 0 | Normal | 172 | N | 0.0 | Up | 0 |
| 174 | 52 | M | ASY | 140 | 266 | 0 | Normal | 134 | Y | 2.0 | Flat | 1 |
| 175 | 43 | M | ASY | 140 | 288 | 0 | Normal | 135 | Y | 2.0 | Flat | 1 |
| 176 | 54 | M | ASY | 140 | 216 | 0 | Normal | 105 | N | 1.5 | Flat | 1 |
| 177 | 59 | M | ATA | 140 | 287 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 178 | 37 | M | NAP | 130 | 194 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 179 | 46 | F | ASY | 130 | 238 | 0 | Normal | 90 | N | 0.0 | Up | 0 |
| 180 | 52 | M | ASY | 130 | 225 | 0 | Normal | 120 | Y | 2.0 | Flat | 1 |
| 181 | 51 | M | ATA | 130 | 224 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 182 | 52 | M | ASY | 140 | 404 | 0 | Normal | 124 | Y | 2.0 | Flat | 1 |
| 183 | 46 | M | ASY | 110 | 238 | 0 | ST | 140 | Y | 1.0 | Flat | 0 |
| 184 | 54 | F | ATA | 160 | 312 | 0 | Normal | 130 | N | 0.0 | Up | 0 |
| 185 | 58 | M | NAP | 160 | 211 | 1 | ST | 92 | N | 0.0 | Flat | 1 |
| 186 | 58 | M | ATA | 130 | 251 | 0 | Normal | 110 | N | 0.0 | Up | 0 |
| 187 | 41 | M | ASY | 120 | 237 | 1 | Normal | 138 | Y | 1.0 | Flat | 1 |
| 188 | 50 | F | ASY | 120 | 328 | 0 | Normal | 110 | Y | 1.0 | Flat | 0 |
| 189 | 53 | M | ASY | 180 | 285 | 0 | ST | 120 | Y | 1.5 | Flat | 1 |
| 190 | 46 | M | ASY | 180 | 280 | 0 | ST | 120 | N | 0.0 | Up | 0 |
| 191 | 50 | M | ATA | 170 | 209 | 0 | ST | 116 | N | 0.0 | Up | 0 |
| 192 | 48 | M | ATA | 130 | 245 | 0 | Normal | 160 | N | 0.0 | Up | 0 |
| 193 | 45 | M | NAP | 135 | 192 | 0 | Normal | 110 | N | 0.0 | Up | 0 |
| 194 | 41 | F | ATA | 125 | 184 | 0 | Normal | 180 | N | 0.0 | Up | 0 |
| 195 | 62 | F | TA | 160 | 193 | 0 | Normal | 116 | N | 0.0 | Up | 0 |
| 196 | 49 | M | ASY | 120 | 297 | 0 | Normal | 132 | N | 1.0 | Flat | 0 |
| 197 | 42 | M | ATA | 150 | 268 | 0 | Normal | 136 | N | 0.0 | Up | 0 |
| 198 | 53 | M | ASY | 120 | 246 | 0 | Normal | 116 | Y | 0.0 | Flat | 1 |
| 199 | 57 | F | TA | 130 | 308 | 0 | Normal | 98 | N | 1.0 | Flat | 0 |
| 200 | 47 | M | TA | 110 | 249 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 201 | 46 | M | NAP | 120 | 230 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 202 | 42 | M | NAP | 160 | 147 | 0 | Normal | 146 | N | 0.0 | Up | 0 |
| 203 | 31 | F | ATA | 100 | 219 | 0 | ST | 150 | N | 0.0 | Up | 0 |
| 204 | 56 | M | ATA | 130 | 184 | 0 | Normal | 100 | N | 0.0 | Up | 0 |
| 205 | 50 | M | ASY | 150 | 215 | 0 | Normal | 140 | Y | 0.0 | Up | 0 |
| 206 | 35 | M | ATA | 120 | 308 | 0 | LVH | 180 | N | 0.0 | Up | 0 |
| 207 | 35 | M | ATA | 110 | 257 | 0 | Normal | 140 | N | 0.0 | Flat | 1 |
| 208 | 28 | M | ATA | 130 | 132 | 0 | LVH | 185 | N | 0.0 | Up | 0 |
| 209 | 54 | M | ASY | 125 | 216 | 0 | Normal | 140 | N | 0.0 | Flat | 1 |
| 210 | 48 | M | ASY | 106 | 263 | 1 | Normal | 110 | N | 0.0 | Flat | 1 |
| 211 | 50 | F | NAP | 140 | 288 | 0 | Normal | 140 | Y | 0.0 | Flat | 1 |
| 212 | 56 | M | NAP | 130 | 276 | 0 | Normal | 128 | Y | 1.0 | Up | 0 |
| 213 | 56 | F | NAP | 130 | 219 | 0 | ST | 164 | N | 0.0 | Up | 0 |
| 214 | 47 | M | ASY | 150 | 226 | 0 | Normal | 98 | Y | 1.5 | Flat | 1 |
| 215 | 30 | F | TA | 170 | 237 | 0 | ST | 170 | N | 0.0 | Up | 0 |
| 216 | 39 | M | ASY | 110 | 280 | 0 | Normal | 150 | N | 0.0 | Flat | 1 |
| 217 | 54 | M | NAP | 120 | 217 | 0 | Normal | 137 | N | 0.0 | Up | 0 |
| 218 | 55 | M | ATA | 140 | 196 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 219 | 29 | M | ATA | 140 | 263 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 220 | 46 | M | ASY | 130 | 222 | 0 | Normal | 112 | N | 0.0 | Flat | 1 |
| 221 | 51 | F | ASY | 160 | 303 | 0 | Normal | 150 | Y | 1.0 | Flat | 1 |
| 222 | 48 | F | NAP | 120 | 195 | 0 | Normal | 125 | N | 0.0 | Up | 0 |
| 223 | 33 | M | NAP | 120 | 298 | 0 | Normal | 185 | N | 0.0 | Up | 0 |
| 224 | 55 | M | ATA | 120 | 256 | 1 | Normal | 137 | N | 0.0 | Up | 0 |
| 225 | 50 | M | ASY | 145 | 264 | 0 | Normal | 150 | N | 0.0 | Flat | 1 |
| 226 | 53 | M | NAP | 120 | 195 | 0 | Normal | 140 | N | 0.0 | Up | 0 |
| 227 | 38 | M | ASY | 92 | 117 | 0 | Normal | 134 | Y | 2.5 | Flat | 1 |
| 228 | 41 | M | ATA | 120 | 295 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 229 | 37 | F | ASY | 130 | 173 | 0 | ST | 184 | N | 0.0 | Up | 0 |
| 230 | 37 | M | ASY | 130 | 315 | 0 | Normal | 158 | N | 0.0 | Up | 0 |
| 231 | 40 | M | NAP | 130 | 281 | 0 | Normal | 167 | N | 0.0 | Up | 0 |
| 232 | 38 | F | ATA | 120 | 275 | 0 | Normal | 129 | N | 0.0 | Up | 0 |
| 233 | 41 | M | ASY | 112 | 250 | 0 | Normal | 142 | N | 0.0 | Up | 0 |
| 234 | 54 | F | ATA | 140 | 309 | 0 | ST | 140 | N | 0.0 | Up | 0 |
| 235 | 39 | M | ATA | 120 | 200 | 0 | Normal | 160 | Y | 1.0 | Flat | 0 |
| 236 | 41 | M | ASY | 120 | 336 | 0 | Normal | 118 | Y | 3.0 | Flat | 1 |
| 237 | 55 | M | TA | 140 | 295 | 0 | Normal | 136 | N | 0.0 | Flat | 1 |
| 238 | 48 | M | ASY | 160 | 355 | 0 | Normal | 99 | Y | 2.0 | Flat | 1 |
| 239 | 48 | M | ASY | 160 | 193 | 0 | Normal | 102 | Y | 3.0 | Flat | 1 |
| 240 | 55 | M | ATA | 145 | 326 | 0 | Normal | 155 | N | 0.0 | Up | 0 |
| 241 | 54 | M | ASY | 200 | 198 | 0 | Normal | 142 | Y | 2.0 | Flat | 1 |
| 242 | 55 | M | ATA | 160 | 292 | 1 | Normal | 143 | Y | 2.0 | Flat | 1 |
| 243 | 43 | F | ATA | 120 | 266 | 0 | Normal | 118 | N | 0.0 | Up | 0 |
| 244 | 48 | M | ASY | 160 | 268 | 0 | Normal | 103 | Y | 1.0 | Flat | 1 |
| 245 | 54 | M | TA | 120 | 171 | 0 | Normal | 137 | N | 2.0 | Up | 0 |
| 246 | 54 | M | NAP | 120 | 237 | 0 | Normal | 150 | Y | 1.5 | Flat | 1 |
| 247 | 48 | M | ASY | 122 | 275 | 1 | ST | 150 | Y | 2.0 | Down | 1 |
| 248 | 45 | M | ASY | 130 | 219 | 0 | ST | 130 | Y | 1.0 | Flat | 1 |
| 249 | 49 | M | ASY | 130 | 341 | 0 | Normal | 120 | Y | 1.0 | Flat | 1 |
| 250 | 44 | M | ASY | 135 | 491 | 0 | Normal | 135 | N | 0.0 | Flat | 1 |
| 251 | 48 | M | ASY | 120 | 260 | 0 | Normal | 115 | N | 2.0 | Flat | 1 |
| 252 | 61 | M | ASY | 125 | 292 | 0 | ST | 115 | Y | 0.0 | Up | 0 |
| 253 | 62 | M | ATA | 140 | 271 | 0 | Normal | 152 | N | 1.0 | Up | 0 |
| 254 | 55 | M | ASY | 145 | 248 | 0 | Normal | 96 | Y | 2.0 | Flat | 1 |
| 255 | 53 | F | NAP | 120 | 274 | 0 | Normal | 130 | N | 0.0 | Up | 0 |
| 256 | 55 | F | ATA | 130 | 394 | 0 | LVH | 150 | N | 0.0 | Up | 0 |
| 257 | 36 | M | NAP | 150 | 160 | 0 | Normal | 172 | N | 0.0 | Up | 0 |
| 258 | 51 | F | NAP | 150 | 200 | 0 | Normal | 120 | N | 0.5 | Up | 0 |
| 259 | 55 | F | ATA | 122 | 320 | 0 | Normal | 155 | N | 0.0 | Up | 0 |
| 260 | 46 | M | ATA | 140 | 275 | 0 | Normal | 165 | Y | 0.0 | Up | 0 |
| 261 | 54 | F | ATA | 120 | 221 | 0 | Normal | 138 | N | 1.0 | Up | 0 |
| 262 | 46 | M | ASY | 120 | 231 | 0 | Normal | 115 | Y | 0.0 | Flat | 1 |
| 263 | 59 | M | ASY | 130 | 126 | 0 | Normal | 125 | N | 0.0 | Flat | 1 |
| 264 | 47 | M | NAP | 140 | 193 | 0 | Normal | 145 | Y | 1.0 | Flat | 1 |
| 265 | 54 | M | ATA | 160 | 305 | 0 | Normal | 175 | N | 0.0 | Up | 0 |
| 266 | 52 | M | ASY | 130 | 298 | 0 | Normal | 110 | Y | 1.0 | Flat | 1 |
| 267 | 34 | M | ATA | 98 | 220 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 268 | 54 | M | ASY | 130 | 242 | 0 | Normal | 91 | Y | 1.0 | Flat | 1 |
| 269 | 47 | F | NAP | 130 | 235 | 0 | Normal | 145 | N | 2.0 | Flat | 0 |
| 270 | 45 | M | ASY | 120 | 225 | 0 | Normal | 140 | N | 0.0 | Up | 0 |
| 271 | 32 | F | ATA | 105 | 198 | 0 | Normal | 165 | N | 0.0 | Up | 0 |
| 272 | 55 | M | ASY | 140 | 201 | 0 | Normal | 130 | Y | 3.0 | Flat | 1 |
| 273 | 55 | M | NAP | 120 | 220 | 0 | LVH | 134 | N | 0.0 | Up | 0 |
| 274 | 45 | F | ATA | 180 | 295 | 0 | Normal | 180 | N | 0.0 | Up | 0 |
| 275 | 59 | M | NAP | 180 | 213 | 0 | Normal | 100 | N | 0.0 | Up | 0 |
| 276 | 51 | M | NAP | 135 | 160 | 0 | Normal | 150 | N | 2.0 | Flat | 1 |
| 277 | 52 | M | ASY | 170 | 223 | 0 | Normal | 126 | Y | 1.5 | Flat | 1 |
| 278 | 57 | F | ASY | 180 | 347 | 0 | ST | 126 | Y | 0.8 | Flat | 0 |
| 279 | 54 | F | ATA | 130 | 253 | 0 | ST | 155 | N | 0.0 | Up | 0 |
| 280 | 60 | M | NAP | 120 | 246 | 0 | LVH | 135 | N | 0.0 | Up | 0 |
| 281 | 49 | M | ASY | 150 | 222 | 0 | Normal | 122 | N | 2.0 | Flat | 1 |
| 282 | 51 | F | NAP | 130 | 220 | 0 | Normal | 160 | Y | 2.0 | Up | 0 |
| 283 | 55 | F | ATA | 110 | 344 | 0 | ST | 160 | N | 0.0 | Up | 0 |
| 284 | 42 | M | ASY | 140 | 358 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 285 | 51 | F | NAP | 110 | 190 | 0 | Normal | 120 | N | 0.0 | Up | 0 |
| 286 | 59 | M | ASY | 140 | 169 | 0 | Normal | 140 | N | 0.0 | Up | 0 |
| 287 | 53 | M | ATA | 120 | 181 | 0 | Normal | 132 | N | 0.0 | Up | 0 |
| 288 | 48 | F | ATA | 133 | 308 | 0 | ST | 156 | N | 2.0 | Up | 0 |
| 289 | 36 | M | ATA | 120 | 166 | 0 | Normal | 180 | N | 0.0 | Up | 0 |
| 290 | 48 | M | NAP | 110 | 211 | 0 | Normal | 138 | N | 0.0 | Up | 0 |
| 291 | 47 | F | ATA | 140 | 257 | 0 | Normal | 135 | N | 1.0 | Up | 0 |
| 292 | 53 | M | ASY | 130 | 182 | 0 | Normal | 148 | N | 0.0 | Up | 0 |
| 293 | 65 | M | ASY | 115 | 0 | 0 | Normal | 93 | Y | 0.0 | Flat | 1 |
| 294 | 32 | M | TA | 95 | 0 | 1 | Normal | 127 | N | 0.7 | Up | 1 |
| 295 | 61 | M | ASY | 105 | 0 | 1 | Normal | 110 | Y | 1.5 | Up | 1 |
| 296 | 50 | M | ASY | 145 | 0 | 1 | Normal | 139 | Y | 0.7 | Flat | 1 |
| 297 | 57 | M | ASY | 110 | 0 | 1 | ST | 131 | Y | 1.4 | Up | 1 |
| 298 | 51 | M | ASY | 110 | 0 | 1 | Normal | 92 | N | 0.0 | Flat | 1 |
| 299 | 47 | M | ASY | 110 | 0 | 1 | ST | 149 | N | 2.1 | Up | 1 |
| 300 | 60 | M | ASY | 160 | 0 | 1 | Normal | 149 | N | 0.4 | Flat | 1 |
| 301 | 55 | M | ATA | 140 | 0 | 0 | ST | 150 | N | 0.2 | Up | 0 |
| 302 | 53 | M | ASY | 125 | 0 | 1 | Normal | 120 | N | 1.5 | Up | 1 |
| 303 | 62 | F | ASY | 120 | 0 | 1 | ST | 123 | Y | 1.7 | Down | 1 |
| 304 | 51 | M | ASY | 95 | 0 | 1 | Normal | 126 | N | 2.2 | Flat | 1 |
| 305 | 51 | F | ASY | 120 | 0 | 1 | Normal | 127 | Y | 1.5 | Up | 1 |
| 306 | 55 | M | ASY | 115 | 0 | 1 | Normal | 155 | N | 0.1 | Flat | 1 |
| 307 | 53 | M | ATA | 130 | 0 | 0 | ST | 120 | N | 0.7 | Down | 0 |
| 308 | 58 | M | ASY | 115 | 0 | 1 | Normal | 138 | N | 0.5 | Up | 1 |
| 309 | 57 | M | ASY | 95 | 0 | 1 | Normal | 182 | N | 0.7 | Down | 1 |
| 310 | 65 | M | ASY | 155 | 0 | 0 | Normal | 154 | N | 1.0 | Up | 0 |
| 311 | 60 | M | ASY | 125 | 0 | 1 | Normal | 110 | N | 0.1 | Up | 1 |
| 312 | 41 | M | ASY | 125 | 0 | 1 | Normal | 176 | N | 1.6 | Up | 1 |
| 313 | 34 | M | ASY | 115 | 0 | 1 | Normal | 154 | N | 0.2 | Up | 1 |
| 314 | 53 | M | ASY | 80 | 0 | 0 | Normal | 141 | Y | 2.0 | Down | 0 |
| 315 | 74 | M | ATA | 145 | 0 | 1 | ST | 123 | N | 1.3 | Up | 1 |
| 316 | 57 | M | NAP | 105 | 0 | 1 | Normal | 148 | N | 0.3 | Flat | 1 |
| 317 | 56 | M | ASY | 140 | 0 | 1 | Normal | 121 | Y | 1.8 | Up | 1 |
| 318 | 61 | M | ASY | 130 | 0 | 1 | Normal | 77 | N | 2.5 | Flat | 1 |
| 319 | 68 | M | ASY | 145 | 0 | 1 | Normal | 136 | N | 1.8 | Up | 1 |
| 320 | 59 | M | NAP | 125 | 0 | 1 | Normal | 175 | N | 2.6 | Flat | 1 |
| 321 | 63 | M | ASY | 100 | 0 | 1 | Normal | 109 | N | -0.9 | Flat | 1 |
| 322 | 38 | F | ASY | 105 | 0 | 1 | Normal | 166 | N | 2.8 | Up | 1 |
| 323 | 62 | M | ASY | 115 | 0 | 1 | Normal | 128 | Y | 2.5 | Down | 1 |
| 324 | 46 | M | ASY | 100 | 0 | 1 | ST | 133 | N | -2.6 | Flat | 1 |
| 325 | 42 | M | ASY | 105 | 0 | 1 | Normal | 128 | Y | -1.5 | Down | 1 |
| 326 | 45 | M | NAP | 110 | 0 | 0 | Normal | 138 | N | -0.1 | Up | 0 |
| 327 | 59 | M | ASY | 125 | 0 | 1 | Normal | 119 | Y | 0.9 | Up | 1 |
| 328 | 52 | M | ASY | 95 | 0 | 1 | Normal | 82 | Y | 0.8 | Flat | 1 |
| 329 | 60 | M | ASY | 130 | 0 | 1 | ST | 130 | Y | 1.1 | Down | 1 |
| 330 | 60 | M | NAP | 115 | 0 | 1 | Normal | 143 | N | 2.4 | Up | 1 |
| 331 | 56 | M | ASY | 115 | 0 | 1 | ST | 82 | N | -1.0 | Up | 1 |
| 332 | 38 | M | NAP | 100 | 0 | 0 | Normal | 179 | N | -1.1 | Up | 0 |
| 333 | 40 | M | ASY | 95 | 0 | 1 | ST | 144 | N | 0.0 | Up | 1 |
| 334 | 51 | M | ASY | 130 | 0 | 1 | Normal | 170 | N | -0.7 | Up | 1 |
| 335 | 62 | M | TA | 120 | 0 | 1 | LVH | 134 | N | -0.8 | Flat | 1 |
| 336 | 72 | M | NAP | 160 | 0 | 0 | LVH | 114 | N | 1.6 | Flat | 0 |
| 337 | 63 | M | ASY | 150 | 0 | 1 | ST | 154 | N | 3.7 | Up | 1 |
| 338 | 63 | M | ASY | 140 | 0 | 1 | LVH | 149 | N | 2.0 | Up | 1 |
| 339 | 64 | F | ASY | 95 | 0 | 1 | Normal | 145 | N | 1.1 | Down | 1 |
| 340 | 43 | M | ASY | 100 | 0 | 1 | Normal | 122 | N | 1.5 | Down | 1 |
| 341 | 64 | M | ASY | 110 | 0 | 1 | Normal | 114 | Y | 1.3 | Down | 1 |
| 342 | 61 | M | ASY | 110 | 0 | 1 | Normal | 113 | N | 1.4 | Flat | 1 |
| 343 | 52 | M | ASY | 130 | 0 | 1 | Normal | 120 | N | 0.0 | Flat | 1 |
| 344 | 51 | M | ASY | 120 | 0 | 1 | Normal | 104 | N | 0.0 | Flat | 1 |
| 345 | 69 | M | ASY | 135 | 0 | 0 | Normal | 130 | N | 0.0 | Flat | 1 |
| 346 | 59 | M | ASY | 120 | 0 | 0 | Normal | 115 | N | 0.0 | Flat | 1 |
| 347 | 48 | M | ASY | 115 | 0 | 1 | Normal | 128 | N | 0.0 | Flat | 1 |
| 348 | 69 | M | ASY | 137 | 0 | 0 | ST | 104 | Y | 1.6 | Flat | 1 |
| 349 | 36 | M | ASY | 110 | 0 | 1 | Normal | 125 | Y | 1.0 | Flat | 1 |
| 350 | 53 | M | ASY | 120 | 0 | 1 | Normal | 120 | N | 0.0 | Flat | 1 |
| 351 | 43 | M | ASY | 140 | 0 | 0 | ST | 140 | Y | 0.5 | Up | 1 |
| 352 | 56 | M | ASY | 120 | 0 | 0 | ST | 100 | Y | -1.0 | Down | 1 |
| 353 | 58 | M | ASY | 130 | 0 | 0 | ST | 100 | Y | 1.0 | Flat | 1 |
| 354 | 55 | M | ASY | 120 | 0 | 0 | ST | 92 | N | 0.3 | Up | 1 |
| 355 | 67 | M | TA | 145 | 0 | 0 | LVH | 125 | N | 0.0 | Flat | 1 |
| 356 | 46 | M | ASY | 115 | 0 | 0 | Normal | 113 | Y | 1.5 | Flat | 1 |
| 357 | 53 | M | ATA | 120 | 0 | 0 | Normal | 95 | N | 0.0 | Flat | 1 |
| 358 | 38 | M | NAP | 115 | 0 | 0 | Normal | 128 | Y | 0.0 | Flat | 1 |
| 359 | 53 | M | NAP | 105 | 0 | 0 | Normal | 115 | N | 0.0 | Flat | 1 |
| 360 | 62 | M | NAP | 160 | 0 | 0 | Normal | 72 | Y | 0.0 | Flat | 1 |
| 361 | 47 | M | ASY | 160 | 0 | 0 | Normal | 124 | Y | 0.0 | Flat | 1 |
| 362 | 56 | M | NAP | 155 | 0 | 0 | ST | 99 | N | 0.0 | Flat | 1 |
| 363 | 56 | M | ASY | 120 | 0 | 0 | ST | 148 | N | 0.0 | Flat | 1 |
| 364 | 56 | M | NAP | 120 | 0 | 0 | Normal | 97 | N | 0.0 | Flat | 0 |
| 365 | 64 | F | ASY | 200 | 0 | 0 | Normal | 140 | Y | 1.0 | Flat | 1 |
| 366 | 61 | M | ASY | 150 | 0 | 0 | Normal | 117 | Y | 2.0 | Flat | 1 |
| 367 | 68 | M | ASY | 135 | 0 | 0 | ST | 120 | Y | 0.0 | Up | 1 |
| 368 | 57 | M | ASY | 140 | 0 | 0 | Normal | 120 | Y | 2.0 | Flat | 1 |
| 369 | 63 | M | ASY | 150 | 0 | 0 | Normal | 86 | Y | 2.0 | Flat | 1 |
| 370 | 60 | M | ASY | 135 | 0 | 0 | Normal | 63 | Y | 0.5 | Up | 1 |
| 371 | 66 | M | ASY | 150 | 0 | 0 | Normal | 108 | Y | 2.0 | Flat | 1 |
| 372 | 63 | M | ASY | 185 | 0 | 0 | Normal | 98 | Y | 0.0 | Up | 1 |
| 373 | 59 | M | ASY | 135 | 0 | 0 | Normal | 115 | Y | 1.0 | Flat | 1 |
| 374 | 61 | M | ASY | 125 | 0 | 0 | Normal | 105 | Y | 0.0 | Down | 1 |
| 375 | 73 | F | NAP | 160 | 0 | 0 | ST | 121 | N | 0.0 | Up | 1 |
| 376 | 47 | M | NAP | 155 | 0 | 0 | Normal | 118 | Y | 1.0 | Flat | 1 |
| 377 | 65 | M | ASY | 160 | 0 | 1 | ST | 122 | N | 1.2 | Flat | 1 |
| 378 | 70 | M | ASY | 140 | 0 | 1 | Normal | 157 | Y | 2.0 | Flat | 1 |
| 379 | 50 | M | ASY | 120 | 0 | 0 | ST | 156 | Y | 0.0 | Up | 1 |
| 380 | 60 | M | ASY | 160 | 0 | 0 | ST | 99 | Y | 0.5 | Flat | 1 |
| 381 | 50 | M | ASY | 115 | 0 | 0 | Normal | 120 | Y | 0.5 | Flat | 1 |
| 382 | 43 | M | ASY | 115 | 0 | 0 | Normal | 145 | Y | 2.0 | Flat | 1 |
| 383 | 38 | F | ASY | 110 | 0 | 0 | Normal | 156 | N | 0.0 | Flat | 1 |
| 384 | 54 | M | ASY | 120 | 0 | 0 | Normal | 155 | N | 0.0 | Flat | 1 |
| 385 | 61 | M | ASY | 150 | 0 | 0 | Normal | 105 | Y | 0.0 | Flat | 1 |
| 386 | 42 | M | ASY | 145 | 0 | 0 | Normal | 99 | Y | 0.0 | Flat | 1 |
| 387 | 53 | M | ASY | 130 | 0 | 0 | LVH | 135 | Y | 1.0 | Flat | 1 |
| 388 | 55 | M | ASY | 140 | 0 | 0 | Normal | 83 | N | 0.0 | Flat | 1 |
| 389 | 61 | M | ASY | 160 | 0 | 1 | ST | 145 | N | 1.0 | Flat | 1 |
| 390 | 51 | M | ASY | 140 | 0 | 0 | Normal | 60 | N | 0.0 | Flat | 1 |
| 391 | 70 | M | ASY | 115 | 0 | 0 | ST | 92 | Y | 0.0 | Flat | 1 |
| 392 | 61 | M | ASY | 130 | 0 | 0 | LVH | 115 | N | 0.0 | Flat | 1 |
| 393 | 38 | M | ASY | 150 | 0 | 1 | Normal | 120 | Y | 0.7 | Flat | 1 |
| 394 | 57 | M | ASY | 160 | 0 | 1 | Normal | 98 | Y | 2.0 | Flat | 1 |
| 395 | 38 | M | ASY | 135 | 0 | 1 | Normal | 150 | N | 0.0 | Flat | 1 |
| 396 | 62 | F | TA | 140 | 0 | 1 | Normal | 143 | N | 0.0 | Flat | 1 |
| 397 | 58 | M | ASY | 170 | 0 | 1 | ST | 105 | Y | 0.0 | Flat | 1 |
| 398 | 52 | M | ASY | 165 | 0 | 1 | Normal | 122 | Y | 1.0 | Up | 1 |
| 399 | 61 | M | NAP | 200 | 0 | 1 | ST | 70 | N | 0.0 | Flat | 1 |
| 400 | 50 | F | ASY | 160 | 0 | 1 | Normal | 110 | N | 0.0 | Flat | 1 |
| 401 | 51 | M | ASY | 130 | 0 | 1 | ST | 163 | N | 0.0 | Flat | 1 |
| 402 | 65 | M | ASY | 145 | 0 | 1 | ST | 67 | N | 0.7 | Flat | 1 |
| 403 | 52 | M | ASY | 135 | 0 | 1 | Normal | 128 | Y | 2.0 | Flat | 1 |
| 404 | 47 | M | NAP | 110 | 0 | 1 | Normal | 120 | Y | 0.0 | Flat | 1 |
| 405 | 35 | M | ASY | 120 | 0 | 1 | Normal | 130 | Y | 1.2 | Flat | 1 |
| 406 | 57 | M | ASY | 140 | 0 | 1 | Normal | 100 | Y | 0.0 | Flat | 1 |
| 407 | 62 | M | ASY | 115 | 0 | 1 | Normal | 72 | Y | -0.5 | Flat | 1 |
| 408 | 59 | M | ASY | 110 | 0 | 1 | Normal | 94 | N | 0.0 | Flat | 1 |
| 409 | 53 | M | NAP | 160 | 0 | 1 | LVH | 122 | Y | 0.0 | Flat | 1 |
| 410 | 62 | M | ASY | 150 | 0 | 1 | ST | 78 | N | 2.0 | Flat | 1 |
| 411 | 54 | M | ASY | 180 | 0 | 1 | Normal | 150 | N | 1.5 | Flat | 1 |
| 412 | 56 | M | ASY | 125 | 0 | 1 | Normal | 103 | Y | 1.0 | Flat | 1 |
| 413 | 56 | M | NAP | 125 | 0 | 1 | Normal | 98 | N | -2.0 | Flat | 1 |
| 414 | 54 | M | ASY | 130 | 0 | 1 | Normal | 110 | Y | 3.0 | Flat | 1 |
| 415 | 66 | F | ASY | 155 | 0 | 1 | Normal | 90 | N | 0.0 | Flat | 1 |
| 416 | 63 | M | ASY | 140 | 260 | 0 | ST | 112 | Y | 3.0 | Flat | 1 |
| 417 | 44 | M | ASY | 130 | 209 | 0 | ST | 127 | N | 0.0 | Up | 0 |
| 418 | 60 | M | ASY | 132 | 218 | 0 | ST | 140 | Y | 1.5 | Down | 1 |
| 419 | 55 | M | ASY | 142 | 228 | 0 | ST | 149 | Y | 2.5 | Up | 1 |
| 420 | 66 | M | NAP | 110 | 213 | 1 | LVH | 99 | Y | 1.3 | Flat | 0 |
| 421 | 66 | M | NAP | 120 | 0 | 0 | ST | 120 | N | -0.5 | Up | 0 |
| 422 | 65 | M | ASY | 150 | 236 | 1 | ST | 105 | Y | 0.0 | Flat | 1 |
| 423 | 60 | M | NAP | 180 | 0 | 0 | ST | 140 | Y | 1.5 | Flat | 0 |
| 424 | 60 | M | NAP | 120 | 0 | 1 | Normal | 141 | Y | 2.0 | Up | 1 |
| 425 | 60 | M | ATA | 160 | 267 | 1 | ST | 157 | N | 0.5 | Flat | 1 |
| 426 | 56 | M | ATA | 126 | 166 | 0 | ST | 140 | N | 0.0 | Up | 0 |
| 427 | 59 | M | ASY | 140 | 0 | 0 | ST | 117 | Y | 1.0 | Flat | 1 |
| 428 | 62 | M | ASY | 110 | 0 | 0 | Normal | 120 | Y | 0.5 | Flat | 1 |
| 429 | 63 | M | NAP | 133 | 0 | 0 | LVH | 120 | Y | 1.0 | Flat | 1 |
| 430 | 57 | M | ASY | 128 | 0 | 1 | ST | 148 | Y | 1.0 | Flat | 1 |
| 431 | 62 | M | ASY | 120 | 220 | 0 | ST | 86 | N | 0.0 | Up | 0 |
| 432 | 63 | M | ASY | 170 | 177 | 0 | Normal | 84 | Y | 2.5 | Down | 1 |
| 433 | 46 | M | ASY | 110 | 236 | 0 | Normal | 125 | Y | 2.0 | Flat | 1 |
| 434 | 63 | M | ASY | 126 | 0 | 0 | ST | 120 | N | 1.5 | Down | 0 |
| 435 | 60 | M | ASY | 152 | 0 | 0 | ST | 118 | Y | 0.0 | Up | 0 |
| 436 | 58 | M | ASY | 116 | 0 | 0 | Normal | 124 | N | 1.0 | Up | 1 |
| 437 | 64 | M | ASY | 120 | 0 | 1 | ST | 106 | N | 2.0 | Flat | 1 |
| 438 | 63 | M | NAP | 130 | 0 | 0 | ST | 111 | Y | 0.0 | Flat | 1 |
| 439 | 74 | M | NAP | 138 | 0 | 0 | Normal | 116 | N | 0.2 | Up | 0 |
| 440 | 52 | M | NAP | 128 | 0 | 0 | ST | 180 | N | 3.0 | Up | 1 |
| 441 | 69 | M | ASY | 130 | 0 | 1 | ST | 129 | N | 1.0 | Flat | 1 |
| 442 | 51 | M | ASY | 128 | 0 | 1 | ST | 125 | Y | 1.2 | Flat | 1 |
| 443 | 60 | M | ASY | 130 | 186 | 1 | ST | 140 | Y | 0.5 | Flat | 1 |
| 444 | 56 | M | ASY | 120 | 100 | 0 | Normal | 120 | Y | 1.5 | Flat | 1 |
| 445 | 55 | M | NAP | 136 | 228 | 0 | ST | 124 | Y | 1.6 | Flat | 1 |
| 446 | 54 | M | ASY | 130 | 0 | 0 | ST | 117 | Y | 1.4 | Flat | 1 |
| 447 | 77 | M | ASY | 124 | 171 | 0 | ST | 110 | Y | 2.0 | Up | 1 |
| 448 | 63 | M | ASY | 160 | 230 | 1 | Normal | 105 | Y | 1.0 | Flat | 1 |
| 449 | 55 | M | NAP | 0 | 0 | 0 | Normal | 155 | N | 1.5 | Flat | 1 |
| 450 | 52 | M | NAP | 122 | 0 | 0 | Normal | 110 | Y | 2.0 | Down | 1 |
| 451 | 64 | M | ASY | 144 | 0 | 0 | ST | 122 | Y | 1.0 | Flat | 1 |
| 452 | 60 | M | ASY | 140 | 281 | 0 | ST | 118 | Y | 1.5 | Flat | 1 |
| 453 | 60 | M | ASY | 120 | 0 | 0 | Normal | 133 | Y | 2.0 | Up | 0 |
| 454 | 58 | M | ASY | 136 | 203 | 1 | Normal | 123 | Y | 1.2 | Flat | 1 |
| 455 | 59 | M | ASY | 154 | 0 | 0 | ST | 131 | Y | 1.5 | Up | 0 |
| 456 | 61 | M | NAP | 120 | 0 | 0 | Normal | 80 | Y | 0.0 | Flat | 1 |
| 457 | 40 | M | ASY | 125 | 0 | 1 | Normal | 165 | N | 0.0 | Flat | 1 |
| 458 | 61 | M | ASY | 134 | 0 | 1 | ST | 86 | N | 1.5 | Flat | 1 |
| 459 | 41 | M | ASY | 104 | 0 | 0 | ST | 111 | N | 0.0 | Up | 0 |
| 460 | 57 | M | ASY | 139 | 277 | 1 | ST | 118 | Y | 1.9 | Flat | 1 |
| 461 | 63 | M | ASY | 136 | 0 | 0 | Normal | 84 | Y | 0.0 | Flat | 1 |
| 462 | 59 | M | ASY | 122 | 233 | 0 | Normal | 117 | Y | 1.3 | Down | 1 |
| 463 | 51 | M | ASY | 128 | 0 | 0 | Normal | 107 | N | 0.0 | Up | 0 |
| 464 | 59 | M | NAP | 131 | 0 | 0 | Normal | 128 | Y | 2.0 | Down | 1 |
| 465 | 42 | M | NAP | 134 | 240 | 0 | Normal | 160 | N | 0.0 | Up | 0 |
| 466 | 55 | M | NAP | 120 | 0 | 0 | ST | 125 | Y | 2.5 | Flat | 1 |
| 467 | 63 | F | ATA | 132 | 0 | 0 | Normal | 130 | N | 0.1 | Up | 0 |
| 468 | 62 | M | ASY | 152 | 153 | 0 | ST | 97 | Y | 1.6 | Up | 1 |
| 469 | 56 | M | ATA | 124 | 224 | 1 | Normal | 161 | N | 2.0 | Flat | 0 |
| 470 | 53 | M | ASY | 126 | 0 | 0 | Normal | 106 | N | 0.0 | Flat | 1 |
| 471 | 68 | M | ASY | 138 | 0 | 0 | Normal | 130 | Y | 3.0 | Flat | 1 |
| 472 | 53 | M | ASY | 154 | 0 | 1 | ST | 140 | Y | 1.5 | Flat | 1 |
| 473 | 60 | M | NAP | 141 | 316 | 1 | ST | 122 | Y | 1.7 | Flat | 1 |
| 474 | 62 | M | ATA | 131 | 0 | 0 | Normal | 130 | N | 0.1 | Up | 0 |
| 475 | 59 | M | ASY | 178 | 0 | 1 | LVH | 120 | Y | 0.0 | Flat | 1 |
| 476 | 51 | M | ASY | 132 | 218 | 1 | LVH | 139 | N | 0.1 | Up | 0 |
| 477 | 61 | M | ASY | 110 | 0 | 1 | Normal | 108 | Y | 2.0 | Down | 1 |
| 478 | 57 | M | ASY | 130 | 311 | 1 | ST | 148 | Y | 2.0 | Flat | 1 |
| 479 | 56 | M | NAP | 170 | 0 | 0 | LVH | 123 | Y | 2.5 | Flat | 1 |
| 480 | 58 | M | ATA | 126 | 0 | 1 | Normal | 110 | Y | 2.0 | Flat | 1 |
| 481 | 69 | M | NAP | 140 | 0 | 1 | ST | 118 | N | 2.5 | Down | 1 |
| 482 | 67 | M | TA | 142 | 270 | 1 | Normal | 125 | N | 2.5 | Up | 1 |
| 483 | 58 | M | ASY | 120 | 0 | 0 | LVH | 106 | Y | 1.5 | Down | 1 |
| 484 | 65 | M | ASY | 134 | 0 | 0 | Normal | 112 | Y | 1.1 | Flat | 1 |
| 485 | 63 | M | ATA | 139 | 217 | 1 | ST | 128 | Y | 1.2 | Flat | 1 |
| 486 | 55 | M | ATA | 110 | 214 | 1 | ST | 180 | N | 0.4 | Up | 0 |
| 487 | 57 | M | ASY | 140 | 214 | 0 | ST | 144 | Y | 2.0 | Flat | 1 |
| 488 | 65 | M | TA | 140 | 252 | 0 | Normal | 135 | N | 0.3 | Up | 0 |
| 489 | 54 | M | ASY | 136 | 220 | 0 | Normal | 140 | Y | 3.0 | Flat | 1 |
| 490 | 72 | M | NAP | 120 | 214 | 0 | Normal | 102 | Y | 1.0 | Flat | 1 |
| 491 | 75 | M | ASY | 170 | 203 | 1 | ST | 108 | N | 0.0 | Flat | 1 |
| 492 | 49 | M | TA | 130 | 0 | 0 | ST | 145 | N | 3.0 | Flat | 1 |
| 493 | 51 | M | NAP | 137 | 339 | 0 | Normal | 127 | Y | 1.7 | Flat | 1 |
| 494 | 60 | M | ASY | 142 | 216 | 0 | Normal | 110 | Y | 2.5 | Flat | 1 |
| 495 | 64 | F | ASY | 142 | 276 | 0 | Normal | 140 | Y | 1.0 | Flat | 1 |
| 496 | 58 | M | ASY | 132 | 458 | 1 | Normal | 69 | N | 1.0 | Down | 0 |
| 497 | 61 | M | ASY | 146 | 241 | 0 | Normal | 148 | Y | 3.0 | Down | 1 |
| 498 | 67 | M | ASY | 160 | 384 | 1 | ST | 130 | Y | 0.0 | Flat | 1 |
| 499 | 62 | M | ASY | 135 | 297 | 0 | Normal | 130 | Y | 1.0 | Flat | 1 |
| 500 | 65 | M | ASY | 136 | 248 | 0 | Normal | 140 | Y | 4.0 | Down | 1 |
| 501 | 63 | M | ASY | 130 | 308 | 0 | Normal | 138 | Y | 2.0 | Flat | 1 |
| 502 | 69 | M | ASY | 140 | 208 | 0 | ST | 140 | Y | 2.0 | Flat | 1 |
| 503 | 51 | M | ASY | 132 | 227 | 1 | ST | 138 | N | 0.2 | Up | 0 |
| 504 | 62 | M | ASY | 158 | 210 | 1 | Normal | 112 | Y | 3.0 | Down | 1 |
| 505 | 55 | M | NAP | 136 | 245 | 1 | ST | 131 | Y | 1.2 | Flat | 1 |
| 506 | 75 | M | ASY | 136 | 225 | 0 | Normal | 112 | Y | 3.0 | Flat | 1 |
| 507 | 40 | M | NAP | 106 | 240 | 0 | Normal | 80 | Y | 0.0 | Up | 0 |
| 508 | 67 | M | ASY | 120 | 0 | 1 | Normal | 150 | N | 1.5 | Down | 1 |
| 509 | 58 | M | ASY | 110 | 198 | 0 | Normal | 110 | N | 0.0 | Flat | 1 |
| 510 | 60 | M | ASY | 136 | 195 | 0 | Normal | 126 | N | 0.3 | Up | 0 |
| 511 | 63 | M | ASY | 160 | 267 | 1 | ST | 88 | Y | 2.0 | Flat | 1 |
| 512 | 35 | M | NAP | 123 | 161 | 0 | ST | 153 | N | -0.1 | Up | 0 |
| 513 | 62 | M | TA | 112 | 258 | 0 | ST | 150 | Y | 1.3 | Flat | 1 |
| 514 | 43 | M | ASY | 122 | 0 | 0 | Normal | 120 | N | 0.5 | Up | 1 |
| 515 | 63 | M | NAP | 130 | 0 | 1 | ST | 160 | N | 3.0 | Flat | 0 |
| 516 | 68 | M | NAP | 150 | 195 | 1 | Normal | 132 | N | 0.0 | Flat | 1 |
| 517 | 65 | M | ASY | 150 | 235 | 0 | Normal | 120 | Y | 1.5 | Flat | 1 |
| 518 | 48 | M | NAP | 102 | 0 | 1 | ST | 110 | Y | 1.0 | Down | 1 |
| 519 | 63 | M | ASY | 96 | 305 | 0 | ST | 121 | Y | 1.0 | Up | 1 |
| 520 | 64 | M | ASY | 130 | 223 | 0 | ST | 128 | N | 0.5 | Flat | 0 |
| 521 | 61 | M | ASY | 120 | 282 | 0 | ST | 135 | Y | 4.0 | Down | 1 |
| 522 | 50 | M | ASY | 144 | 349 | 0 | LVH | 120 | Y | 1.0 | Up | 1 |
| 523 | 59 | M | ASY | 124 | 160 | 0 | Normal | 117 | Y | 1.0 | Flat | 1 |
| 524 | 55 | M | ASY | 150 | 160 | 0 | ST | 150 | N | 0.0 | Up | 0 |
| 525 | 45 | M | NAP | 130 | 236 | 0 | Normal | 144 | N | 0.1 | Up | 0 |
| 526 | 65 | M | ASY | 144 | 312 | 0 | LVH | 113 | Y | 1.7 | Flat | 1 |
| 527 | 61 | M | ATA | 139 | 283 | 0 | Normal | 135 | N | 0.3 | Up | 0 |
| 528 | 49 | M | NAP | 131 | 142 | 0 | Normal | 127 | Y | 1.5 | Flat | 1 |
| 529 | 72 | M | ASY | 143 | 211 | 0 | Normal | 109 | Y | 1.4 | Flat | 1 |
| 530 | 50 | M | ASY | 133 | 218 | 0 | Normal | 128 | Y | 1.1 | Flat | 1 |
| 531 | 64 | M | ASY | 143 | 306 | 1 | ST | 115 | Y | 1.8 | Flat | 1 |
| 532 | 55 | M | ASY | 116 | 186 | 1 | ST | 102 | N | 0.0 | Flat | 1 |
| 533 | 63 | M | ASY | 110 | 252 | 0 | ST | 140 | Y | 2.0 | Flat | 1 |
| 534 | 59 | M | ASY | 125 | 222 | 0 | Normal | 135 | Y | 2.5 | Down | 1 |
| 535 | 56 | M | ASY | 130 | 0 | 0 | LVH | 122 | Y | 1.0 | Flat | 1 |
| 536 | 62 | M | NAP | 133 | 0 | 1 | ST | 119 | Y | 1.2 | Flat | 1 |
| 537 | 74 | M | ASY | 150 | 258 | 1 | ST | 130 | Y | 4.0 | Down | 1 |
| 538 | 54 | M | ASY | 130 | 202 | 1 | Normal | 112 | Y | 2.0 | Flat | 1 |
| 539 | 57 | M | ASY | 110 | 197 | 0 | LVH | 100 | N | 0.0 | Up | 0 |
| 540 | 62 | M | NAP | 138 | 204 | 0 | ST | 122 | Y | 1.2 | Flat | 1 |
| 541 | 76 | M | NAP | 104 | 113 | 0 | LVH | 120 | N | 3.5 | Down | 1 |
| 542 | 54 | F | ASY | 138 | 274 | 0 | Normal | 105 | Y | 1.5 | Flat | 1 |
| 543 | 70 | M | ASY | 170 | 192 | 0 | ST | 129 | Y | 3.0 | Down | 1 |
| 544 | 61 | F | ATA | 140 | 298 | 1 | Normal | 120 | Y | 0.0 | Up | 0 |
| 545 | 48 | M | ASY | 132 | 272 | 0 | ST | 139 | N | 0.2 | Up | 0 |
| 546 | 48 | M | NAP | 132 | 220 | 1 | ST | 162 | N | 0.0 | Flat | 1 |
| 547 | 61 | M | TA | 142 | 200 | 1 | ST | 100 | N | 1.5 | Down | 1 |
| 548 | 66 | M | ASY | 112 | 261 | 0 | Normal | 140 | N | 1.5 | Up | 1 |
| 549 | 68 | M | TA | 139 | 181 | 1 | ST | 135 | N | 0.2 | Up | 0 |
| 550 | 55 | M | ASY | 172 | 260 | 0 | Normal | 73 | N | 2.0 | Flat | 1 |
| 551 | 62 | M | NAP | 120 | 220 | 0 | LVH | 86 | N | 0.0 | Up | 0 |
| 552 | 71 | M | NAP | 144 | 221 | 0 | Normal | 108 | Y | 1.8 | Flat | 1 |
| 553 | 74 | M | TA | 145 | 216 | 1 | Normal | 116 | Y | 1.8 | Flat | 1 |
| 554 | 53 | M | NAP | 155 | 175 | 1 | ST | 160 | N | 0.3 | Up | 0 |
| 555 | 58 | M | NAP | 150 | 219 | 0 | ST | 118 | Y | 0.0 | Flat | 1 |
| 556 | 75 | M | ASY | 160 | 310 | 1 | Normal | 112 | Y | 2.0 | Down | 0 |
| 557 | 56 | M | NAP | 137 | 208 | 1 | ST | 122 | Y | 1.8 | Flat | 1 |
| 558 | 58 | M | NAP | 137 | 232 | 0 | ST | 124 | Y | 1.4 | Flat | 1 |
| 559 | 64 | M | ASY | 134 | 273 | 0 | Normal | 102 | Y | 4.0 | Down | 1 |
| 560 | 54 | M | NAP | 133 | 203 | 0 | ST | 137 | N | 0.2 | Up | 0 |
| 561 | 54 | M | ATA | 132 | 182 | 0 | ST | 141 | N | 0.1 | Up | 0 |
| 562 | 59 | M | ASY | 140 | 274 | 0 | Normal | 154 | Y | 2.0 | Flat | 0 |
| 563 | 55 | M | ASY | 135 | 204 | 1 | ST | 126 | Y | 1.1 | Flat | 1 |
| 564 | 57 | M | ASY | 144 | 270 | 1 | ST | 160 | Y | 2.0 | Flat | 1 |
| 565 | 61 | M | ASY | 141 | 292 | 0 | ST | 115 | Y | 1.7 | Flat | 1 |
| 566 | 41 | M | ASY | 150 | 171 | 0 | Normal | 128 | Y | 1.5 | Flat | 0 |
| 567 | 71 | M | ASY | 130 | 221 | 0 | ST | 115 | Y | 0.0 | Flat | 1 |
| 568 | 38 | M | ASY | 110 | 289 | 0 | Normal | 105 | Y | 1.5 | Down | 1 |
| 569 | 55 | M | ASY | 158 | 217 | 0 | Normal | 110 | Y | 2.5 | Flat | 1 |
| 570 | 56 | M | ASY | 128 | 223 | 0 | ST | 119 | Y | 2.0 | Down | 1 |
| 571 | 69 | M | ASY | 140 | 110 | 1 | Normal | 109 | Y | 1.5 | Flat | 1 |
| 572 | 64 | M | ASY | 150 | 193 | 0 | ST | 135 | Y | 0.5 | Flat | 1 |
| 573 | 72 | M | ASY | 160 | 123 | 1 | LVH | 130 | N | 1.5 | Flat | 1 |
| 574 | 69 | M | ASY | 142 | 210 | 1 | ST | 112 | Y | 1.5 | Flat | 1 |
| 575 | 56 | M | ASY | 137 | 282 | 1 | Normal | 126 | Y | 1.2 | Flat | 1 |
| 576 | 62 | M | ASY | 139 | 170 | 0 | ST | 120 | Y | 3.0 | Flat | 1 |
| 577 | 67 | M | ASY | 146 | 369 | 0 | Normal | 110 | Y | 1.9 | Flat | 1 |
| 578 | 57 | M | ASY | 156 | 173 | 0 | LVH | 119 | Y | 3.0 | Down | 1 |
| 579 | 69 | M | ASY | 145 | 289 | 1 | ST | 110 | Y | 1.8 | Flat | 1 |
| 580 | 51 | M | ASY | 131 | 152 | 1 | LVH | 130 | Y | 1.0 | Flat | 1 |
| 581 | 48 | M | ASY | 140 | 208 | 0 | Normal | 159 | Y | 1.5 | Up | 1 |
| 582 | 69 | M | ASY | 122 | 216 | 1 | LVH | 84 | Y | 0.0 | Flat | 1 |
| 583 | 69 | M | NAP | 142 | 271 | 0 | LVH | 126 | N | 0.3 | Up | 0 |
| 584 | 64 | M | ASY | 141 | 244 | 1 | ST | 116 | Y | 1.5 | Flat | 1 |
| 585 | 57 | M | ATA | 180 | 285 | 1 | ST | 120 | N | 0.8 | Flat | 1 |
| 586 | 53 | M | ASY | 124 | 243 | 0 | Normal | 122 | Y | 2.0 | Flat | 1 |
| 587 | 37 | M | NAP | 118 | 240 | 0 | LVH | 165 | N | 1.0 | Flat | 0 |
| 588 | 67 | M | ASY | 140 | 219 | 0 | ST | 122 | Y | 2.0 | Flat | 1 |
| 589 | 74 | M | NAP | 140 | 237 | 1 | Normal | 94 | N | 0.0 | Flat | 1 |
| 590 | 63 | M | ATA | 136 | 165 | 0 | ST | 133 | N | 0.2 | Up | 0 |
| 591 | 58 | M | ASY | 100 | 213 | 0 | ST | 110 | N | 0.0 | Up | 0 |
| 592 | 61 | M | ASY | 190 | 287 | 1 | LVH | 150 | Y | 2.0 | Down | 1 |
| 593 | 64 | M | ASY | 130 | 258 | 1 | LVH | 130 | N | 0.0 | Flat | 1 |
| 594 | 58 | M | ASY | 160 | 256 | 1 | LVH | 113 | Y | 1.0 | Up | 1 |
| 595 | 60 | M | ASY | 130 | 186 | 1 | LVH | 140 | Y | 0.5 | Flat | 1 |
| 596 | 57 | M | ASY | 122 | 264 | 0 | LVH | 100 | N | 0.0 | Flat | 1 |
| 597 | 55 | M | NAP | 133 | 185 | 0 | ST | 136 | N | 0.2 | Up | 0 |
| 598 | 55 | M | ASY | 120 | 226 | 0 | LVH | 127 | Y | 1.7 | Down | 1 |
| 599 | 56 | M | ASY | 130 | 203 | 1 | Normal | 98 | N | 1.5 | Flat | 1 |
| 600 | 57 | M | ASY | 130 | 207 | 0 | ST | 96 | Y | 1.0 | Flat | 0 |
| 601 | 61 | M | NAP | 140 | 284 | 0 | Normal | 123 | Y | 1.3 | Flat | 1 |
| 602 | 61 | M | NAP | 120 | 337 | 0 | Normal | 98 | Y | 0.0 | Flat | 1 |
| 603 | 74 | M | ASY | 155 | 310 | 0 | Normal | 112 | Y | 1.5 | Down | 1 |
| 604 | 68 | M | NAP | 134 | 254 | 1 | Normal | 151 | Y | 0.0 | Up | 0 |
| 605 | 51 | F | ASY | 114 | 258 | 1 | LVH | 96 | N | 1.0 | Up | 0 |
| 606 | 62 | M | ASY | 160 | 254 | 1 | ST | 108 | Y | 3.0 | Flat | 1 |
| 607 | 53 | M | ASY | 144 | 300 | 1 | ST | 128 | Y | 1.5 | Flat | 1 |
| 608 | 62 | M | ASY | 158 | 170 | 0 | ST | 138 | Y | 0.0 | Flat | 1 |
| 609 | 46 | M | ASY | 134 | 310 | 0 | Normal | 126 | N | 0.0 | Flat | 1 |
| 610 | 54 | F | ASY | 127 | 333 | 1 | ST | 154 | N | 0.0 | Flat | 1 |
| 611 | 62 | M | TA | 135 | 139 | 0 | ST | 137 | N | 0.2 | Up | 0 |
| 612 | 55 | M | ASY | 122 | 223 | 1 | ST | 100 | N | 0.0 | Flat | 1 |
| 613 | 58 | M | ASY | 140 | 385 | 1 | LVH | 135 | N | 0.3 | Up | 0 |
| 614 | 62 | M | ATA | 120 | 254 | 0 | LVH | 93 | Y | 0.0 | Flat | 1 |
| 615 | 70 | M | ASY | 130 | 322 | 0 | LVH | 109 | N | 2.4 | Flat | 1 |
| 616 | 67 | F | NAP | 115 | 564 | 0 | LVH | 160 | N | 1.6 | Flat | 0 |
| 617 | 57 | M | ATA | 124 | 261 | 0 | Normal | 141 | N | 0.3 | Up | 1 |
| 618 | 64 | M | ASY | 128 | 263 | 0 | Normal | 105 | Y | 0.2 | Flat | 0 |
| 619 | 74 | F | ATA | 120 | 269 | 0 | LVH | 121 | Y | 0.2 | Up | 0 |
| 620 | 65 | M | ASY | 120 | 177 | 0 | Normal | 140 | N | 0.4 | Up | 0 |
| 621 | 56 | M | NAP | 130 | 256 | 1 | LVH | 142 | Y | 0.6 | Flat | 1 |
| 622 | 59 | M | ASY | 110 | 239 | 0 | LVH | 142 | Y | 1.2 | Flat | 1 |
| 623 | 60 | M | ASY | 140 | 293 | 0 | LVH | 170 | N | 1.2 | Flat | 1 |
| 624 | 63 | F | ASY | 150 | 407 | 0 | LVH | 154 | N | 4.0 | Flat | 1 |
| 625 | 59 | M | ASY | 135 | 234 | 0 | Normal | 161 | N | 0.5 | Flat | 0 |
| 626 | 53 | M | ASY | 142 | 226 | 0 | LVH | 111 | Y | 0.0 | Up | 0 |
| 627 | 44 | M | NAP | 140 | 235 | 0 | LVH | 180 | N | 0.0 | Up | 0 |
| 628 | 61 | M | TA | 134 | 234 | 0 | Normal | 145 | N | 2.6 | Flat | 1 |
| 629 | 57 | F | ASY | 128 | 303 | 0 | LVH | 159 | N | 0.0 | Up | 0 |
| 630 | 71 | F | ASY | 112 | 149 | 0 | Normal | 125 | N | 1.6 | Flat | 0 |
| 631 | 46 | M | ASY | 140 | 311 | 0 | Normal | 120 | Y | 1.8 | Flat | 1 |
| 632 | 53 | M | ASY | 140 | 203 | 1 | LVH | 155 | Y | 3.1 | Down | 1 |
| 633 | 64 | M | TA | 110 | 211 | 0 | LVH | 144 | Y | 1.8 | Flat | 0 |
| 634 | 40 | M | TA | 140 | 199 | 0 | Normal | 178 | Y | 1.4 | Up | 0 |
| 635 | 67 | M | ASY | 120 | 229 | 0 | LVH | 129 | Y | 2.6 | Flat | 1 |
| 636 | 48 | M | ATA | 130 | 245 | 0 | LVH | 180 | N | 0.2 | Flat | 0 |
| 637 | 43 | M | ASY | 115 | 303 | 0 | Normal | 181 | N | 1.2 | Flat | 0 |
| 638 | 47 | M | ASY | 112 | 204 | 0 | Normal | 143 | N | 0.1 | Up | 0 |
| 639 | 54 | F | ATA | 132 | 288 | 1 | LVH | 159 | Y | 0.0 | Up | 0 |
| 640 | 48 | F | NAP | 130 | 275 | 0 | Normal | 139 | N | 0.2 | Up | 0 |
| 641 | 46 | F | ASY | 138 | 243 | 0 | LVH | 152 | Y | 0.0 | Flat | 0 |
| 642 | 51 | F | NAP | 120 | 295 | 0 | LVH | 157 | N | 0.6 | Up | 0 |
| 643 | 58 | M | NAP | 112 | 230 | 0 | LVH | 165 | N | 2.5 | Flat | 1 |
| 644 | 71 | F | NAP | 110 | 265 | 1 | LVH | 130 | N | 0.0 | Up | 0 |
| 645 | 57 | M | NAP | 128 | 229 | 0 | LVH | 150 | N | 0.4 | Flat | 1 |
| 646 | 66 | M | ASY | 160 | 228 | 0 | LVH | 138 | N | 2.3 | Up | 0 |
| 647 | 37 | F | NAP | 120 | 215 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 648 | 59 | M | ASY | 170 | 326 | 0 | LVH | 140 | Y | 3.4 | Down | 1 |
| 649 | 50 | M | ASY | 144 | 200 | 0 | LVH | 126 | Y | 0.9 | Flat | 1 |
| 650 | 48 | M | ASY | 130 | 256 | 1 | LVH | 150 | Y | 0.0 | Up | 1 |
| 651 | 61 | M | ASY | 140 | 207 | 0 | LVH | 138 | Y | 1.9 | Up | 1 |
| 652 | 59 | M | TA | 160 | 273 | 0 | LVH | 125 | N | 0.0 | Up | 1 |
| 653 | 42 | M | NAP | 130 | 180 | 0 | Normal | 150 | N | 0.0 | Up | 0 |
| 654 | 48 | M | ASY | 122 | 222 | 0 | LVH | 186 | N | 0.0 | Up | 0 |
| 655 | 40 | M | ASY | 152 | 223 | 0 | Normal | 181 | N | 0.0 | Up | 1 |
| 656 | 62 | F | ASY | 124 | 209 | 0 | Normal | 163 | N | 0.0 | Up | 0 |
| 657 | 44 | M | NAP | 130 | 233 | 0 | Normal | 179 | Y | 0.4 | Up | 0 |
| 658 | 46 | M | ATA | 101 | 197 | 1 | Normal | 156 | N | 0.0 | Up | 0 |
| 659 | 59 | M | NAP | 126 | 218 | 1 | Normal | 134 | N | 2.2 | Flat | 1 |
| 660 | 58 | M | NAP | 140 | 211 | 1 | LVH | 165 | N | 0.0 | Up | 0 |
| 661 | 49 | M | NAP | 118 | 149 | 0 | LVH | 126 | N | 0.8 | Up | 1 |
| 662 | 44 | M | ASY | 110 | 197 | 0 | LVH | 177 | N | 0.0 | Up | 1 |
| 663 | 66 | M | ATA | 160 | 246 | 0 | Normal | 120 | Y | 0.0 | Flat | 1 |
| 664 | 65 | F | ASY | 150 | 225 | 0 | LVH | 114 | N | 1.0 | Flat | 1 |
| 665 | 42 | M | ASY | 136 | 315 | 0 | Normal | 125 | Y | 1.8 | Flat | 1 |
| 666 | 52 | M | ATA | 128 | 205 | 1 | Normal | 184 | N | 0.0 | Up | 0 |
| 667 | 65 | F | NAP | 140 | 417 | 1 | LVH | 157 | N | 0.8 | Up | 0 |
| 668 | 63 | F | ATA | 140 | 195 | 0 | Normal | 179 | N | 0.0 | Up | 0 |
| 669 | 45 | F | ATA | 130 | 234 | 0 | LVH | 175 | N | 0.6 | Flat | 0 |
| 670 | 41 | F | ATA | 105 | 198 | 0 | Normal | 168 | N | 0.0 | Up | 0 |
| 671 | 61 | M | ASY | 138 | 166 | 0 | LVH | 125 | Y | 3.6 | Flat | 1 |
| 672 | 60 | F | NAP | 120 | 178 | 1 | Normal | 96 | N | 0.0 | Up | 0 |
| 673 | 59 | F | ASY | 174 | 249 | 0 | Normal | 143 | Y | 0.0 | Flat | 1 |
| 674 | 62 | M | ATA | 120 | 281 | 0 | LVH | 103 | N | 1.4 | Flat | 1 |
| 675 | 57 | M | NAP | 150 | 126 | 1 | Normal | 173 | N | 0.2 | Up | 0 |
| 676 | 51 | F | ASY | 130 | 305 | 0 | Normal | 142 | Y | 1.2 | Flat | 1 |
| 677 | 44 | M | NAP | 120 | 226 | 0 | Normal | 169 | N | 0.0 | Up | 0 |
| 678 | 60 | F | TA | 150 | 240 | 0 | Normal | 171 | N | 0.9 | Up | 0 |
| 679 | 63 | M | TA | 145 | 233 | 1 | LVH | 150 | N | 2.3 | Down | 0 |
| 680 | 57 | M | ASY | 150 | 276 | 0 | LVH | 112 | Y | 0.6 | Flat | 1 |
| 681 | 51 | M | ASY | 140 | 261 | 0 | LVH | 186 | Y | 0.0 | Up | 0 |
| 682 | 58 | F | ATA | 136 | 319 | 1 | LVH | 152 | N | 0.0 | Up | 1 |
| 683 | 44 | F | NAP | 118 | 242 | 0 | Normal | 149 | N | 0.3 | Flat | 0 |
| 684 | 47 | M | NAP | 108 | 243 | 0 | Normal | 152 | N | 0.0 | Up | 1 |
| 685 | 61 | M | ASY | 120 | 260 | 0 | Normal | 140 | Y | 3.6 | Flat | 1 |
| 686 | 57 | F | ASY | 120 | 354 | 0 | Normal | 163 | Y | 0.6 | Up | 0 |
| 687 | 70 | M | ATA | 156 | 245 | 0 | LVH | 143 | N | 0.0 | Up | 0 |
| 688 | 76 | F | NAP | 140 | 197 | 0 | ST | 116 | N | 1.1 | Flat | 0 |
| 689 | 67 | F | ASY | 106 | 223 | 0 | Normal | 142 | N | 0.3 | Up | 0 |
| 690 | 45 | M | ASY | 142 | 309 | 0 | LVH | 147 | Y | 0.0 | Flat | 1 |
| 691 | 45 | M | ASY | 104 | 208 | 0 | LVH | 148 | Y | 3.0 | Flat | 0 |
| 692 | 39 | F | NAP | 94 | 199 | 0 | Normal | 179 | N | 0.0 | Up | 0 |
| 693 | 42 | F | NAP | 120 | 209 | 0 | Normal | 173 | N | 0.0 | Flat | 0 |
| 694 | 56 | M | ATA | 120 | 236 | 0 | Normal | 178 | N | 0.8 | Up | 0 |
| 695 | 58 | M | ASY | 146 | 218 | 0 | Normal | 105 | N | 2.0 | Flat | 1 |
| 696 | 35 | M | ASY | 120 | 198 | 0 | Normal | 130 | Y | 1.6 | Flat | 1 |
| 697 | 58 | M | ASY | 150 | 270 | 0 | LVH | 111 | Y | 0.8 | Up | 1 |
| 698 | 41 | M | NAP | 130 | 214 | 0 | LVH | 168 | N | 2.0 | Flat | 0 |
| 699 | 57 | M | ASY | 110 | 201 | 0 | Normal | 126 | Y | 1.5 | Flat | 0 |
| 700 | 42 | M | TA | 148 | 244 | 0 | LVH | 178 | N | 0.8 | Up | 0 |
| 701 | 62 | M | ATA | 128 | 208 | 1 | LVH | 140 | N | 0.0 | Up | 0 |
| 702 | 59 | M | TA | 178 | 270 | 0 | LVH | 145 | N | 4.2 | Down | 0 |
| 703 | 41 | F | ATA | 126 | 306 | 0 | Normal | 163 | N | 0.0 | Up | 0 |
| 704 | 50 | M | ASY | 150 | 243 | 0 | LVH | 128 | N | 2.6 | Flat | 1 |
| 705 | 59 | M | ATA | 140 | 221 | 0 | Normal | 164 | Y | 0.0 | Up | 0 |
| 706 | 61 | F | ASY | 130 | 330 | 0 | LVH | 169 | N | 0.0 | Up | 1 |
| 707 | 54 | M | ASY | 124 | 266 | 0 | LVH | 109 | Y | 2.2 | Flat | 1 |
| 708 | 54 | M | ASY | 110 | 206 | 0 | LVH | 108 | Y | 0.0 | Flat | 1 |
| 709 | 52 | M | ASY | 125 | 212 | 0 | Normal | 168 | N | 1.0 | Up | 1 |
| 710 | 47 | M | ASY | 110 | 275 | 0 | LVH | 118 | Y | 1.0 | Flat | 1 |
| 711 | 66 | M | ASY | 120 | 302 | 0 | LVH | 151 | N | 0.4 | Flat | 0 |
| 712 | 58 | M | ASY | 100 | 234 | 0 | Normal | 156 | N | 0.1 | Up | 1 |
| 713 | 64 | F | NAP | 140 | 313 | 0 | Normal | 133 | N | 0.2 | Up | 0 |
| 714 | 50 | F | ATA | 120 | 244 | 0 | Normal | 162 | N | 1.1 | Up | 0 |
| 715 | 44 | F | NAP | 108 | 141 | 0 | Normal | 175 | N | 0.6 | Flat | 0 |
| 716 | 67 | M | ASY | 120 | 237 | 0 | Normal | 71 | N | 1.0 | Flat | 1 |
| 717 | 49 | F | ASY | 130 | 269 | 0 | Normal | 163 | N | 0.0 | Up | 0 |
| 718 | 57 | M | ASY | 165 | 289 | 1 | LVH | 124 | N | 1.0 | Flat | 1 |
| 719 | 63 | M | ASY | 130 | 254 | 0 | LVH | 147 | N | 1.4 | Flat | 1 |
| 720 | 48 | M | ASY | 124 | 274 | 0 | LVH | 166 | N | 0.5 | Flat | 1 |
| 721 | 51 | M | NAP | 100 | 222 | 0 | Normal | 143 | Y | 1.2 | Flat | 0 |
| 722 | 60 | F | ASY | 150 | 258 | 0 | LVH | 157 | N | 2.6 | Flat | 1 |
| 723 | 59 | M | ASY | 140 | 177 | 0 | Normal | 162 | Y | 0.0 | Up | 1 |
| 724 | 45 | F | ATA | 112 | 160 | 0 | Normal | 138 | N | 0.0 | Flat | 0 |
| 725 | 55 | F | ASY | 180 | 327 | 0 | ST | 117 | Y | 3.4 | Flat | 1 |
| 726 | 41 | M | ATA | 110 | 235 | 0 | Normal | 153 | N | 0.0 | Up | 0 |
| 727 | 60 | F | ASY | 158 | 305 | 0 | LVH | 161 | N | 0.0 | Up | 1 |
| 728 | 54 | F | NAP | 135 | 304 | 1 | Normal | 170 | N | 0.0 | Up | 0 |
| 729 | 42 | M | ATA | 120 | 295 | 0 | Normal | 162 | N | 0.0 | Up | 0 |
| 730 | 49 | F | ATA | 134 | 271 | 0 | Normal | 162 | N | 0.0 | Flat | 0 |
| 731 | 46 | M | ASY | 120 | 249 | 0 | LVH | 144 | N | 0.8 | Up | 1 |
| 732 | 56 | F | ASY | 200 | 288 | 1 | LVH | 133 | Y | 4.0 | Down | 1 |
| 733 | 66 | F | TA | 150 | 226 | 0 | Normal | 114 | N | 2.6 | Down | 0 |
| 734 | 56 | M | ASY | 130 | 283 | 1 | LVH | 103 | Y | 1.6 | Down | 1 |
| 735 | 49 | M | NAP | 120 | 188 | 0 | Normal | 139 | N | 2.0 | Flat | 1 |
| 736 | 54 | M | ASY | 122 | 286 | 0 | LVH | 116 | Y | 3.2 | Flat | 1 |
| 737 | 57 | M | ASY | 152 | 274 | 0 | Normal | 88 | Y | 1.2 | Flat | 1 |
| 738 | 65 | F | NAP | 160 | 360 | 0 | LVH | 151 | N | 0.8 | Up | 0 |
| 739 | 54 | M | NAP | 125 | 273 | 0 | LVH | 152 | N | 0.5 | Down | 0 |
| 740 | 54 | F | NAP | 160 | 201 | 0 | Normal | 163 | N | 0.0 | Up | 0 |
| 741 | 62 | M | ASY | 120 | 267 | 0 | Normal | 99 | Y | 1.8 | Flat | 1 |
| 742 | 52 | F | NAP | 136 | 196 | 0 | LVH | 169 | N | 0.1 | Flat | 0 |
| 743 | 52 | M | ATA | 134 | 201 | 0 | Normal | 158 | N | 0.8 | Up | 0 |
| 744 | 60 | M | ASY | 117 | 230 | 1 | Normal | 160 | Y | 1.4 | Up | 1 |
| 745 | 63 | F | ASY | 108 | 269 | 0 | Normal | 169 | Y | 1.8 | Flat | 1 |
| 746 | 66 | M | ASY | 112 | 212 | 0 | LVH | 132 | Y | 0.1 | Up | 1 |
| 747 | 42 | M | ASY | 140 | 226 | 0 | Normal | 178 | N | 0.0 | Up | 0 |
| 748 | 64 | M | ASY | 120 | 246 | 0 | LVH | 96 | Y | 2.2 | Down | 1 |
| 749 | 54 | M | NAP | 150 | 232 | 0 | LVH | 165 | N | 1.6 | Up | 0 |
| 750 | 46 | F | NAP | 142 | 177 | 0 | LVH | 160 | Y | 1.4 | Down | 0 |
| 751 | 67 | F | NAP | 152 | 277 | 0 | Normal | 172 | N | 0.0 | Up | 0 |
| 752 | 56 | M | ASY | 125 | 249 | 1 | LVH | 144 | Y | 1.2 | Flat | 1 |
| 753 | 34 | F | ATA | 118 | 210 | 0 | Normal | 192 | N | 0.7 | Up | 0 |
| 754 | 57 | M | ASY | 132 | 207 | 0 | Normal | 168 | Y | 0.0 | Up | 0 |
| 755 | 64 | M | ASY | 145 | 212 | 0 | LVH | 132 | N | 2.0 | Flat | 1 |
| 756 | 59 | M | ASY | 138 | 271 | 0 | LVH | 182 | N | 0.0 | Up | 0 |
| 757 | 50 | M | NAP | 140 | 233 | 0 | Normal | 163 | N | 0.6 | Flat | 1 |
| 758 | 51 | M | TA | 125 | 213 | 0 | LVH | 125 | Y | 1.4 | Up | 0 |
| 759 | 54 | M | ATA | 192 | 283 | 0 | LVH | 195 | N | 0.0 | Up | 1 |
| 760 | 53 | M | ASY | 123 | 282 | 0 | Normal | 95 | Y | 2.0 | Flat | 1 |
| 761 | 52 | M | ASY | 112 | 230 | 0 | Normal | 160 | N | 0.0 | Up | 1 |
| 762 | 40 | M | ASY | 110 | 167 | 0 | LVH | 114 | Y | 2.0 | Flat | 1 |
| 763 | 58 | M | NAP | 132 | 224 | 0 | LVH | 173 | N | 3.2 | Up | 1 |
| 764 | 41 | F | NAP | 112 | 268 | 0 | LVH | 172 | Y | 0.0 | Up | 0 |
| 765 | 41 | M | NAP | 112 | 250 | 0 | Normal | 179 | N | 0.0 | Up | 0 |
| 766 | 50 | F | NAP | 120 | 219 | 0 | Normal | 158 | N | 1.6 | Flat | 0 |
| 767 | 54 | F | NAP | 108 | 267 | 0 | LVH | 167 | N | 0.0 | Up | 0 |
| 768 | 64 | F | ASY | 130 | 303 | 0 | Normal | 122 | N | 2.0 | Flat | 0 |
| 769 | 51 | F | NAP | 130 | 256 | 0 | LVH | 149 | N | 0.5 | Up | 0 |
| 770 | 46 | F | ATA | 105 | 204 | 0 | Normal | 172 | N | 0.0 | Up | 0 |
| 771 | 55 | M | ASY | 140 | 217 | 0 | Normal | 111 | Y | 5.6 | Down | 1 |
| 772 | 45 | M | ATA | 128 | 308 | 0 | LVH | 170 | N | 0.0 | Up | 0 |
| 773 | 56 | M | TA | 120 | 193 | 0 | LVH | 162 | N | 1.9 | Flat | 0 |
| 774 | 66 | F | ASY | 178 | 228 | 1 | Normal | 165 | Y | 1.0 | Flat | 1 |
| 775 | 38 | M | TA | 120 | 231 | 0 | Normal | 182 | Y | 3.8 | Flat | 1 |
| 776 | 62 | F | ASY | 150 | 244 | 0 | Normal | 154 | Y | 1.4 | Flat | 1 |
| 777 | 55 | M | ATA | 130 | 262 | 0 | Normal | 155 | N | 0.0 | Up | 0 |
| 778 | 58 | M | ASY | 128 | 259 | 0 | LVH | 130 | Y | 3.0 | Flat | 1 |
| 779 | 43 | M | ASY | 110 | 211 | 0 | Normal | 161 | N | 0.0 | Up | 0 |
| 780 | 64 | F | ASY | 180 | 325 | 0 | Normal | 154 | Y | 0.0 | Up | 0 |
| 781 | 50 | F | ASY | 110 | 254 | 0 | LVH | 159 | N | 0.0 | Up | 0 |
| 782 | 53 | M | NAP | 130 | 197 | 1 | LVH | 152 | N | 1.2 | Down | 0 |
| 783 | 45 | F | ASY | 138 | 236 | 0 | LVH | 152 | Y | 0.2 | Flat | 0 |
| 784 | 65 | M | TA | 138 | 282 | 1 | LVH | 174 | N | 1.4 | Flat | 1 |
| 785 | 69 | M | TA | 160 | 234 | 1 | LVH | 131 | N | 0.1 | Flat | 0 |
| 786 | 69 | M | NAP | 140 | 254 | 0 | LVH | 146 | N | 2.0 | Flat | 1 |
| 787 | 67 | M | ASY | 100 | 299 | 0 | LVH | 125 | Y | 0.9 | Flat | 1 |
| 788 | 68 | F | NAP | 120 | 211 | 0 | LVH | 115 | N | 1.5 | Flat | 0 |
| 789 | 34 | M | TA | 118 | 182 | 0 | LVH | 174 | N | 0.0 | Up | 0 |
| 790 | 62 | F | ASY | 138 | 294 | 1 | Normal | 106 | N | 1.9 | Flat | 1 |
| 791 | 51 | M | ASY | 140 | 298 | 0 | Normal | 122 | Y | 4.2 | Flat | 1 |
| 792 | 46 | M | NAP | 150 | 231 | 0 | Normal | 147 | N | 3.6 | Flat | 1 |
| 793 | 67 | M | ASY | 125 | 254 | 1 | Normal | 163 | N | 0.2 | Flat | 1 |
| 794 | 50 | M | NAP | 129 | 196 | 0 | Normal | 163 | N | 0.0 | Up | 0 |
| 795 | 42 | M | NAP | 120 | 240 | 1 | Normal | 194 | N | 0.8 | Down | 0 |
| 796 | 56 | F | ASY | 134 | 409 | 0 | LVH | 150 | Y | 1.9 | Flat | 1 |
| 797 | 41 | M | ASY | 110 | 172 | 0 | LVH | 158 | N | 0.0 | Up | 1 |
| 798 | 42 | F | ASY | 102 | 265 | 0 | LVH | 122 | N | 0.6 | Flat | 0 |
| 799 | 53 | M | NAP | 130 | 246 | 1 | LVH | 173 | N | 0.0 | Up | 0 |
| 800 | 43 | M | NAP | 130 | 315 | 0 | Normal | 162 | N | 1.9 | Up | 0 |
| 801 | 56 | M | ASY | 132 | 184 | 0 | LVH | 105 | Y | 2.1 | Flat | 1 |
| 802 | 52 | M | ASY | 108 | 233 | 1 | Normal | 147 | N | 0.1 | Up | 0 |
| 803 | 62 | F | ASY | 140 | 394 | 0 | LVH | 157 | N | 1.2 | Flat | 0 |
| 804 | 70 | M | NAP | 160 | 269 | 0 | Normal | 112 | Y | 2.9 | Flat | 1 |
| 805 | 54 | M | ASY | 140 | 239 | 0 | Normal | 160 | N | 1.2 | Up | 0 |
| 806 | 70 | M | ASY | 145 | 174 | 0 | Normal | 125 | Y | 2.6 | Down | 1 |
| 807 | 54 | M | ATA | 108 | 309 | 0 | Normal | 156 | N | 0.0 | Up | 0 |
| 808 | 35 | M | ASY | 126 | 282 | 0 | LVH | 156 | Y | 0.0 | Up | 1 |
| 809 | 48 | M | NAP | 124 | 255 | 1 | Normal | 175 | N | 0.0 | Up | 0 |
| 810 | 55 | F | ATA | 135 | 250 | 0 | LVH | 161 | N | 1.4 | Flat | 0 |
| 811 | 58 | F | ASY | 100 | 248 | 0 | LVH | 122 | N | 1.0 | Flat | 0 |
| 812 | 54 | F | NAP | 110 | 214 | 0 | Normal | 158 | N | 1.6 | Flat | 0 |
| 813 | 69 | F | TA | 140 | 239 | 0 | Normal | 151 | N | 1.8 | Up | 0 |
| 814 | 77 | M | ASY | 125 | 304 | 0 | LVH | 162 | Y | 0.0 | Up | 1 |
| 815 | 68 | M | NAP | 118 | 277 | 0 | Normal | 151 | N | 1.0 | Up | 0 |
| 816 | 58 | M | ASY | 125 | 300 | 0 | LVH | 171 | N | 0.0 | Up | 1 |
| 817 | 60 | M | ASY | 125 | 258 | 0 | LVH | 141 | Y | 2.8 | Flat | 1 |
| 818 | 51 | M | ASY | 140 | 299 | 0 | Normal | 173 | Y | 1.6 | Up | 1 |
| 819 | 55 | M | ASY | 160 | 289 | 0 | LVH | 145 | Y | 0.8 | Flat | 1 |
| 820 | 52 | M | TA | 152 | 298 | 1 | Normal | 178 | N | 1.2 | Flat | 0 |
| 821 | 60 | F | NAP | 102 | 318 | 0 | Normal | 160 | N | 0.0 | Up | 0 |
| 822 | 58 | M | NAP | 105 | 240 | 0 | LVH | 154 | Y | 0.6 | Flat | 0 |
| 823 | 64 | M | NAP | 125 | 309 | 0 | Normal | 131 | Y | 1.8 | Flat | 1 |
| 824 | 37 | M | NAP | 130 | 250 | 0 | Normal | 187 | N | 3.5 | Down | 0 |
| 825 | 59 | M | TA | 170 | 288 | 0 | LVH | 159 | N | 0.2 | Flat | 1 |
| 826 | 51 | M | NAP | 125 | 245 | 1 | LVH | 166 | N | 2.4 | Flat | 0 |
| 827 | 43 | F | NAP | 122 | 213 | 0 | Normal | 165 | N | 0.2 | Flat | 0 |
| 828 | 58 | M | ASY | 128 | 216 | 0 | LVH | 131 | Y | 2.2 | Flat | 1 |
| 829 | 29 | M | ATA | 130 | 204 | 0 | LVH | 202 | N | 0.0 | Up | 0 |
| 830 | 41 | F | ATA | 130 | 204 | 0 | LVH | 172 | N | 1.4 | Up | 0 |
| 831 | 63 | F | NAP | 135 | 252 | 0 | LVH | 172 | N | 0.0 | Up | 0 |
| 832 | 51 | M | NAP | 94 | 227 | 0 | Normal | 154 | Y | 0.0 | Up | 0 |
| 833 | 54 | M | NAP | 120 | 258 | 0 | LVH | 147 | N | 0.4 | Flat | 0 |
| 834 | 44 | M | ATA | 120 | 220 | 0 | Normal | 170 | N | 0.0 | Up | 0 |
| 835 | 54 | M | ASY | 110 | 239 | 0 | Normal | 126 | Y | 2.8 | Flat | 1 |
| 836 | 65 | M | ASY | 135 | 254 | 0 | LVH | 127 | N | 2.8 | Flat | 1 |
| 837 | 57 | M | NAP | 150 | 168 | 0 | Normal | 174 | N | 1.6 | Up | 0 |
| 838 | 63 | M | ASY | 130 | 330 | 1 | LVH | 132 | Y | 1.8 | Up | 1 |
| 839 | 35 | F | ASY | 138 | 183 | 0 | Normal | 182 | N | 1.4 | Up | 0 |
| 840 | 41 | M | ATA | 135 | 203 | 0 | Normal | 132 | N | 0.0 | Flat | 0 |
| 841 | 62 | F | NAP | 130 | 263 | 0 | Normal | 97 | N | 1.2 | Flat | 1 |
| 842 | 43 | F | ASY | 132 | 341 | 1 | LVH | 136 | Y | 3.0 | Flat | 1 |
| 843 | 58 | F | TA | 150 | 283 | 1 | LVH | 162 | N | 1.0 | Up | 0 |
| 844 | 52 | M | TA | 118 | 186 | 0 | LVH | 190 | N | 0.0 | Flat | 0 |
| 845 | 61 | F | ASY | 145 | 307 | 0 | LVH | 146 | Y | 1.0 | Flat | 1 |
| 846 | 39 | M | ASY | 118 | 219 | 0 | Normal | 140 | N | 1.2 | Flat | 1 |
| 847 | 45 | M | ASY | 115 | 260 | 0 | LVH | 185 | N | 0.0 | Up | 0 |
| 848 | 52 | M | ASY | 128 | 255 | 0 | Normal | 161 | Y | 0.0 | Up | 1 |
| 849 | 62 | M | NAP | 130 | 231 | 0 | Normal | 146 | N | 1.8 | Flat | 0 |
| 850 | 62 | F | ASY | 160 | 164 | 0 | LVH | 145 | N | 6.2 | Down | 1 |
| 851 | 53 | F | ASY | 138 | 234 | 0 | LVH | 160 | N | 0.0 | Up | 0 |
| 852 | 43 | M | ASY | 120 | 177 | 0 | LVH | 120 | Y | 2.5 | Flat | 1 |
| 853 | 47 | M | NAP | 138 | 257 | 0 | LVH | 156 | N | 0.0 | Up | 0 |
| 854 | 52 | M | ATA | 120 | 325 | 0 | Normal | 172 | N | 0.2 | Up | 0 |
| 855 | 68 | M | NAP | 180 | 274 | 1 | LVH | 150 | Y | 1.6 | Flat | 1 |
| 856 | 39 | M | NAP | 140 | 321 | 0 | LVH | 182 | N | 0.0 | Up | 0 |
| 857 | 53 | F | ASY | 130 | 264 | 0 | LVH | 143 | N | 0.4 | Flat | 0 |
| 858 | 62 | F | ASY | 140 | 268 | 0 | LVH | 160 | N | 3.6 | Down | 1 |
| 859 | 51 | F | NAP | 140 | 308 | 0 | LVH | 142 | N | 1.5 | Up | 0 |
| 860 | 60 | M | ASY | 130 | 253 | 0 | Normal | 144 | Y | 1.4 | Up | 1 |
| 861 | 65 | M | ASY | 110 | 248 | 0 | LVH | 158 | N | 0.6 | Up | 1 |
| 862 | 65 | F | NAP | 155 | 269 | 0 | Normal | 148 | N | 0.8 | Up | 0 |
| 863 | 60 | M | NAP | 140 | 185 | 0 | LVH | 155 | N | 3.0 | Flat | 1 |
| 864 | 60 | M | ASY | 145 | 282 | 0 | LVH | 142 | Y | 2.8 | Flat | 1 |
| 865 | 54 | M | ASY | 120 | 188 | 0 | Normal | 113 | N | 1.4 | Flat | 1 |
| 866 | 44 | M | ATA | 130 | 219 | 0 | LVH | 188 | N | 0.0 | Up | 0 |
| 867 | 44 | M | ASY | 112 | 290 | 0 | LVH | 153 | N | 0.0 | Up | 1 |
| 868 | 51 | M | NAP | 110 | 175 | 0 | Normal | 123 | N | 0.6 | Up | 0 |
| 869 | 59 | M | NAP | 150 | 212 | 1 | Normal | 157 | N | 1.6 | Up | 0 |
| 870 | 71 | F | ATA | 160 | 302 | 0 | Normal | 162 | N | 0.4 | Up | 0 |
| 871 | 61 | M | NAP | 150 | 243 | 1 | Normal | 137 | Y | 1.0 | Flat | 0 |
| 872 | 55 | M | ASY | 132 | 353 | 0 | Normal | 132 | Y | 1.2 | Flat | 1 |
| 873 | 64 | M | NAP | 140 | 335 | 0 | Normal | 158 | N | 0.0 | Up | 1 |
| 874 | 43 | M | ASY | 150 | 247 | 0 | Normal | 171 | N | 1.5 | Up | 0 |
| 875 | 58 | F | NAP | 120 | 340 | 0 | Normal | 172 | N | 0.0 | Up | 0 |
| 876 | 60 | M | ASY | 130 | 206 | 0 | LVH | 132 | Y | 2.4 | Flat | 1 |
| 877 | 58 | M | ATA | 120 | 284 | 0 | LVH | 160 | N | 1.8 | Flat | 1 |
| 878 | 49 | M | ATA | 130 | 266 | 0 | Normal | 171 | N | 0.6 | Up | 0 |
| 879 | 48 | M | ATA | 110 | 229 | 0 | Normal | 168 | N | 1.0 | Down | 1 |
| 880 | 52 | M | NAP | 172 | 199 | 1 | Normal | 162 | N | 0.5 | Up | 0 |
| 881 | 44 | M | ATA | 120 | 263 | 0 | Normal | 173 | N | 0.0 | Up | 0 |
| 882 | 56 | F | ATA | 140 | 294 | 0 | LVH | 153 | N | 1.3 | Flat | 0 |
| 883 | 57 | M | ASY | 140 | 192 | 0 | Normal | 148 | N | 0.4 | Flat | 0 |
| 884 | 67 | M | ASY | 160 | 286 | 0 | LVH | 108 | Y | 1.5 | Flat | 1 |
| 885 | 53 | F | NAP | 128 | 216 | 0 | LVH | 115 | N | 0.0 | Up | 0 |
| 886 | 52 | M | NAP | 138 | 223 | 0 | Normal | 169 | N | 0.0 | Up | 0 |
| 887 | 43 | M | ASY | 132 | 247 | 1 | LVH | 143 | Y | 0.1 | Flat | 1 |
| 888 | 52 | M | ASY | 128 | 204 | 1 | Normal | 156 | Y | 1.0 | Flat | 1 |
| 889 | 59 | M | TA | 134 | 204 | 0 | Normal | 162 | N | 0.8 | Up | 1 |
| 890 | 64 | M | TA | 170 | 227 | 0 | LVH | 155 | N | 0.6 | Flat | 0 |
| 891 | 66 | F | NAP | 146 | 278 | 0 | LVH | 152 | N | 0.0 | Flat | 0 |
| 892 | 39 | F | NAP | 138 | 220 | 0 | Normal | 152 | N | 0.0 | Flat | 0 |
| 893 | 57 | M | ATA | 154 | 232 | 0 | LVH | 164 | N | 0.0 | Up | 1 |
| 894 | 58 | F | ASY | 130 | 197 | 0 | Normal | 131 | N | 0.6 | Flat | 0 |
| 895 | 57 | M | ASY | 110 | 335 | 0 | Normal | 143 | Y | 3.0 | Flat | 1 |
| 896 | 47 | M | NAP | 130 | 253 | 0 | Normal | 179 | N | 0.0 | Up | 0 |
| 897 | 55 | F | ASY | 128 | 205 | 0 | ST | 130 | Y | 2.0 | Flat | 1 |
| 898 | 35 | M | ATA | 122 | 192 | 0 | Normal | 174 | N | 0.0 | Up | 0 |
| 899 | 61 | M | ASY | 148 | 203 | 0 | Normal | 161 | N | 0.0 | Up | 1 |
| 900 | 58 | M | ASY | 114 | 318 | 0 | ST | 140 | N | 4.4 | Down | 1 |
| 901 | 58 | F | ASY | 170 | 225 | 1 | LVH | 146 | Y | 2.8 | Flat | 1 |
| 902 | 58 | M | ATA | 125 | 220 | 0 | Normal | 144 | N | 0.4 | Flat | 0 |
| 903 | 56 | M | ATA | 130 | 221 | 0 | LVH | 163 | N | 0.0 | Up | 0 |
| 904 | 56 | M | ATA | 120 | 240 | 0 | Normal | 169 | N | 0.0 | Down | 0 |
| 905 | 67 | M | NAP | 152 | 212 | 0 | LVH | 150 | N | 0.8 | Flat | 1 |
| 906 | 55 | F | ATA | 132 | 342 | 0 | Normal | 166 | N | 1.2 | Up | 0 |
| 907 | 44 | M | ASY | 120 | 169 | 0 | Normal | 144 | Y | 2.8 | Down | 1 |
| 908 | 63 | M | ASY | 140 | 187 | 0 | LVH | 144 | Y | 4.0 | Up | 1 |
| 909 | 63 | F | ASY | 124 | 197 | 0 | Normal | 136 | Y | 0.0 | Flat | 1 |
| 910 | 41 | M | ATA | 120 | 157 | 0 | Normal | 182 | N | 0.0 | Up | 0 |
| 911 | 59 | M | ASY | 164 | 176 | 1 | LVH | 90 | N | 1.0 | Flat | 1 |
| 912 | 57 | F | ASY | 140 | 241 | 0 | Normal | 123 | Y | 0.2 | Flat | 1 |
| 913 | 45 | M | TA | 110 | 264 | 0 | Normal | 132 | N | 1.2 | Flat | 1 |
| 914 | 68 | M | ASY | 144 | 193 | 1 | Normal | 141 | N | 3.4 | Flat | 1 |
| 915 | 57 | M | ASY | 130 | 131 | 0 | Normal | 115 | Y | 1.2 | Flat | 1 |
| 916 | 57 | F | ATA | 130 | 236 | 0 | LVH | 174 | N | 0.0 | Flat | 1 |
| 917 | 38 | M | NAP | 138 | 175 | 0 | Normal | 173 | N | 0.0 | Up | 0 |
Data Preparation - Step 1¶
This data set has 12 columns and there's no columns that can specifically identifying a patient.So no need of removing a column.¶
In [4]:
#Get features name
df.columns
Out[4]:
Index(['Age', 'Sex', 'ChestPainType', 'RestingBP', 'Cholesterol', 'FastingBS',
'RestingECG', 'MaxHR', 'ExerciseAngina', 'Oldpeak', 'ST_Slope',
'HeartDisease'],
dtype='object')
In [5]:
## Display a description of the DataFrame with summary statistics
print("Describe our DataFrame :\n")
# Prints a summary of numerical columns with statistics such as count, mean, standard deviation, min, and max,
# rounding the results to two decimal places for readability
print(df.describe().round(2))
# Display DataFrame information
print("\nDataframe information:\n")
# Prints information about the DataFrame, including the index, column names, non-null counts, and data types
print(df.info())
Describe our DataFrame :
Age RestingBP Cholesterol FastingBS MaxHR Oldpeak \
count 918.00 918.00 918.00 918.00 918.00 918.00
mean 53.51 132.40 198.80 0.23 136.81 0.89
std 9.43 18.51 109.38 0.42 25.46 1.07
min 28.00 0.00 0.00 0.00 60.00 -2.60
25% 47.00 120.00 173.25 0.00 120.00 0.00
50% 54.00 130.00 223.00 0.00 138.00 0.60
75% 60.00 140.00 267.00 0.00 156.00 1.50
max 77.00 200.00 603.00 1.00 202.00 6.20
HeartDisease
count 918.00
mean 0.55
std 0.50
min 0.00
25% 0.00
50% 1.00
75% 1.00
max 1.00
Dataframe information:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 918 entries, 0 to 917
Data columns (total 12 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Age 918 non-null int64
1 Sex 918 non-null object
2 ChestPainType 918 non-null object
3 RestingBP 918 non-null int64
4 Cholesterol 918 non-null int64
5 FastingBS 918 non-null int64
6 RestingECG 918 non-null object
7 MaxHR 918 non-null int64
8 ExerciseAngina 918 non-null object
9 Oldpeak 918 non-null float64
10 ST_Slope 918 non-null object
11 HeartDisease 918 non-null int64
dtypes: float64(1), int64(6), object(5)
memory usage: 86.2+ KB
None
In [6]:
#Checking the missing value
df.isnull().sum()
Out[6]:
Age 0 Sex 0 ChestPainType 0 RestingBP 0 Cholesterol 0 FastingBS 0 RestingECG 0 MaxHR 0 ExerciseAngina 0 Oldpeak 0 ST_Slope 0 HeartDisease 0 dtype: int64
In [7]:
#Visualizing the missing value by seaborn library
sns.heatmap(df.isnull(),cmap = 'magma',cbar = False);
Data Cleanup¶
In [8]:
# Clean and replace invalid entries in the DataFrame
df = df.map(
lambda x: x if x is np.NaN or not \
isinstance(x, str) else str(x).strip('_')).replace(['', 'nan', '!@9#%8', '#F%$D@*&8'], np.NaN)
# Get the dimensions of the DataFrame (rows, columns)
df.shape
Out[8]:
(918, 12)
In [9]:
# Display the data types of each column in the DataFrame
df.dtypes
Out[9]:
Age int64 Sex object ChestPainType object RestingBP int64 Cholesterol int64 FastingBS int64 RestingECG object MaxHR int64 ExerciseAngina object Oldpeak float64 ST_Slope object HeartDisease int64 dtype: object
Data Preparation - Step 2¶
Oldpeak column shouldn't be an Object type as it has all numeric values. Let's convert that column to a Numeric Type¶
In [10]:
# Convert the 'Oldpeak' column to a numeric data type, handling errors by setting invalid parsing as NaN
df['Oldpeak'] = pd.to_numeric(df['Oldpeak'], errors='coerce').astype('float')
In [11]:
df.dtypes
Out[11]:
Age int64 Sex object ChestPainType object RestingBP int64 Cholesterol int64 FastingBS int64 RestingECG object MaxHR int64 ExerciseAngina object Oldpeak float64 ST_Slope object HeartDisease int64 dtype: object
Missing Values¶
In [12]:
# Calculate the sum of missing values in each column
missing_values_sum = df.isna().sum()
# Calculate the percentage of missing values for each column
total_rows = df.shape[0]
missing_values_percentage = (missing_values_sum / total_rows) * 100
# Get the data type of the column as well
column_datatypes = df.dtypes
# Create a DataFrame to display the results
missing_info = pd.DataFrame({
'Data Type': column_datatypes,
'Missing Values': missing_values_sum,
'Percentage Missing (%)': missing_values_percentage
})
# Display the missing values sum and percentage
print(missing_info)
Data Type Missing Values Percentage Missing (%) Age int64 0 0.0 Sex object 0 0.0 ChestPainType object 0 0.0 RestingBP int64 0 0.0 Cholesterol int64 0 0.0 FastingBS int64 0 0.0 RestingECG object 0 0.0 MaxHR int64 0 0.0 ExerciseAngina object 0 0.0 Oldpeak float64 0 0.0 ST_Slope object 0 0.0 HeartDisease int64 0 0.0
In [13]:
# Create a bar plot for missing values percentage
plt.figure(figsize=(10, 5))
missing_values_percentage.plot(kind='bar', color='lightcoral')
plt.title('Missing Values Percentage')
plt.xlabel('Columns')
plt.ylabel('Percentage (%)')
# Adjust spacing between plots
plt.tight_layout()
# Show the plot
plt.show()
According to the above results, no missing values were found in our dataset.¶
Categorical Data:¶
In [14]:
#Encoding categorical Data
df['Sex'] = df['Sex'].replace({'M': 1, 'F': 2})
df['ChestPainType'] = df['ChestPainType'].replace({'ATA': 1, 'NAP': 2, 'ASY': 3, 'TA': 4})
df['FastingBS'] = df['FastingBS'].replace({0: 1, 1: 2})
df['RestingECG'] = df['RestingECG'].replace({'Normal': 1, 'ST': 2, 'LVH': 3})
df['ExerciseAngina'] = df['ExerciseAngina'].replace({'N': 1, 'Y': 2})
df['ST_Slope'] = df['ST_Slope'].replace({'Up': 1, 'Flat': 2, 'Down': 3})
df['HeartDisease'] = df['HeartDisease'].replace({1: 1, 0: 2})
In [15]:
#separate categorical data/numerical data
df_num = df[['Age', 'RestingBP', 'Cholesterol', 'MaxHR', 'Oldpeak']]
df_cat = df[['Sex', 'ChestPainType','FastingBS', 'RestingECG', 'ExerciseAngina', 'ST_Slope', 'HeartDisease']]
df_num_name = ['Age', 'RestingBP', 'Cholesterol', 'MaxHR', 'Oldpeak']
df_cat_name = ['Sex', 'ChestPainType','FastingBS', 'RestingECG', 'ExerciseAngina', 'ST_Slope', 'HeartDisease']
In [16]:
#Easier way to separate numerical value and categorical value if we have many features
col = list(df.columns)
categorical_features = []
numerical_features = []
for i in col:
if len(df[i].unique()) > 6:
numerical_features.append(i)
else:
categorical_features.append(i)
print('Categorical Features :',*categorical_features,'\n')
print('Numerical Features :',*numerical_features)
Categorical Features : Sex ChestPainType FastingBS RestingECG ExerciseAngina ST_Slope HeartDisease Numerical Features : Age RestingBP Cholesterol MaxHR Oldpeak
Outliers¶
In [17]:
for feature in df_num_name:
plt.figure(figsize=(4,5))
plt.boxplot(df[feature])
plt.title(f'{feature}')
plt.show()
In [18]:
#Detecting outliers
def find_outliers_IQR(df):
q1=df.quantile(0.25)
q3=df.quantile(0.75)
IQR=q3-q1
outliers = df[((df<(q1-1.5*IQR)) | (df>(q3+1.5*IQR)))]
return outliers
In [19]:
for char in df_num_name :
outliers = find_outliers_IQR(df[str(char)])
print(f"-Check {char} outliers ")
print('number of outliers: '+ str(len(outliers)))
print('max outlier value: '+ str(outliers.max()))
print('min outlier value: '+ str(outliers.min())+ '\n')
-Check Age outliers number of outliers: 0 max outlier value: nan min outlier value: nan -Check RestingBP outliers number of outliers: 28 max outlier value: 200 min outlier value: 0 -Check Cholesterol outliers number of outliers: 183 max outlier value: 603 min outlier value: 0 -Check MaxHR outliers number of outliers: 2 max outlier value: 63 min outlier value: 60 -Check Oldpeak outliers number of outliers: 16 max outlier value: 6.2 min outlier value: -2.6
In [20]:
# Define a function to generate a histogram for a specific column
def generate_histogram(data, column_name):
plt.figure(figsize=(6, 4))
sns.histplot(data[column_name], bins=20, kde=True) # Adjust the number of bins as needed
# Customize the y-axis tick labels
plt.gca().get_yaxis().get_major_formatter().set_scientific(False)
plt.xlabel(column_name)
plt.ylabel('Frequency')
plt.title(f'Histogram of {column_name}')
plt.show()
In [21]:
# Define a function to generate a box plot for a specific column
def generate_boxplot(data, column_name):
plt.figure(figsize=(6, 4))
sns.boxplot(y=data[column_name])
# Customize the y-axis tick labels
plt.gca().get_yaxis().get_major_formatter().set_scientific(False)
plt.ylabel(column_name)
plt.title(f'Box Plot of {column_name}')
plt.show()
Age Column Data Analysis¶
In [22]:
# Generate and display a histogram for the 'Age' column in the DataFrame
generate_histogram(df, 'Age')
# Generate and display a boxplot for the 'Age' column in the DataFrame
generate_boxplot(df, 'Age')
Cholesterol Column Data Analysis¶
In [23]:
# Generate and display a histogram for the 'Cholesterol' column in the DataFrame
generate_histogram(df, 'Cholesterol')
# Generate and display a boxplot for the 'Cholesterol' column in the DataFrame
generate_boxplot(df, 'Cholesterol')
As per the above diagram, the Cholesterol column contains data that doesn’t seems to be practical. We must exclude those data considering the optimal Cholesterol level to be 60 to 700 .¶
In [24]:
# Checking the number of Zeros present in the Cholesterol
print(f" original shape of Cholesterol : {df.Cholesterol.shape}")
ziro_Cholesterol = df[df['Cholesterol'] == 0]
print(f" zero values of Cholesterol : {ziro_Cholesterol.shape}")
non_ziro_Cholesterol = df[df['Cholesterol'] != 0]
print(f" non zero values of Cholesterol : {non_ziro_Cholesterol.shape}")
original shape of Cholesterol : (918,) zero values of Cholesterol : (172, 12) non zero values of Cholesterol : (746, 12)
The cholesterol value cannot be zero. So, zeros must be filled with the median value¶
In [25]:
## Converting Zero Value of Cholesterol to NaN Value
df.loc[df['Cholesterol'] == 0,'Cholesterol'] = np.nan
df.head(5)
Out[25]:
| Age | Sex | ChestPainType | RestingBP | Cholesterol | FastingBS | RestingECG | MaxHR | ExerciseAngina | Oldpeak | ST_Slope | HeartDisease | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 40 | 1 | 1 | 140 | 289.0 | 1 | 1 | 172 | 1 | 0.0 | 1 | 2 |
| 1 | 49 | 2 | 2 | 160 | 180.0 | 1 | 1 | 156 | 1 | 1.0 | 2 | 1 |
| 2 | 37 | 1 | 1 | 130 | 283.0 | 1 | 2 | 98 | 1 | 0.0 | 1 | 2 |
| 3 | 48 | 2 | 3 | 138 | 214.0 | 1 | 1 | 108 | 2 | 1.5 | 2 | 1 |
| 4 | 54 | 1 | 2 | 150 | 195.0 | 1 | 1 | 122 | 1 | 0.0 | 1 | 2 |
In [26]:
## NaN value of Cholesterol is filled with median value
df["Cholesterol"] = df["Cholesterol"].fillna(df["Cholesterol"].median())
df["Cholesterol"]
Out[26]:
0 289.0 1 180.0 2 283.0 3 214.0 4 195.0 5 339.0 6 237.0 7 208.0 8 207.0 9 284.0 10 211.0 11 164.0 12 204.0 13 234.0 14 211.0 15 273.0 16 196.0 17 201.0 18 248.0 19 267.0 20 223.0 21 184.0 22 201.0 23 288.0 24 215.0 25 209.0 26 260.0 27 284.0 28 468.0 29 188.0 30 518.0 31 167.0 32 224.0 33 172.0 34 186.0 35 254.0 36 306.0 37 250.0 38 177.0 39 227.0 40 230.0 41 294.0 42 264.0 43 259.0 44 175.0 45 318.0 46 223.0 47 216.0 48 340.0 49 289.0 50 233.0 51 205.0 52 224.0 53 245.0 54 180.0 55 194.0 56 270.0 57 213.0 58 365.0 59 342.0 60 253.0 61 254.0 62 224.0 63 277.0 64 202.0 65 260.0 66 297.0 67 225.0 68 246.0 69 412.0 70 265.0 71 215.0 72 182.0 73 218.0 74 268.0 75 163.0 76 529.0 77 167.0 78 100.0 79 206.0 80 277.0 81 238.0 82 223.0 83 196.0 84 213.0 85 139.0 86 263.0 87 216.0 88 291.0 89 229.0 90 208.0 91 307.0 92 210.0 93 329.0 94 182.0 95 263.0 96 207.0 97 147.0 98 85.0 99 269.0 100 275.0 101 179.0 102 392.0 103 466.0 104 186.0 105 260.0 106 254.0 107 214.0 108 129.0 109 241.0 110 188.0 111 255.0 112 276.0 113 297.0 114 207.0 115 246.0 116 282.0 117 338.0 118 160.0 119 156.0 120 248.0 121 272.0 122 240.0 123 393.0 124 230.0 125 246.0 126 161.0 127 163.0 128 230.0 129 228.0 130 292.0 131 202.0 132 388.0 133 230.0 134 294.0 135 265.0 136 215.0 137 241.0 138 166.0 139 247.0 140 331.0 141 341.0 142 291.0 143 243.0 144 279.0 145 273.0 146 198.0 147 249.0 148 168.0 149 603.0 150 215.0 151 159.0 152 275.0 153 270.0 154 291.0 155 342.0 156 190.0 157 185.0 158 290.0 159 195.0 160 264.0 161 212.0 162 263.0 163 196.0 164 225.0 165 272.0 166 231.0 167 238.0 168 222.0 169 179.0 170 243.0 171 235.0 172 320.0 173 187.0 174 266.0 175 288.0 176 216.0 177 287.0 178 194.0 179 238.0 180 225.0 181 224.0 182 404.0 183 238.0 184 312.0 185 211.0 186 251.0 187 237.0 188 328.0 189 285.0 190 280.0 191 209.0 192 245.0 193 192.0 194 184.0 195 193.0 196 297.0 197 268.0 198 246.0 199 308.0 200 249.0 201 230.0 202 147.0 203 219.0 204 184.0 205 215.0 206 308.0 207 257.0 208 132.0 209 216.0 210 263.0 211 288.0 212 276.0 213 219.0 214 226.0 215 237.0 216 280.0 217 217.0 218 196.0 219 263.0 220 222.0 221 303.0 222 195.0 223 298.0 224 256.0 225 264.0 226 195.0 227 117.0 228 295.0 229 173.0 230 315.0 231 281.0 232 275.0 233 250.0 234 309.0 235 200.0 236 336.0 237 295.0 238 355.0 239 193.0 240 326.0 241 198.0 242 292.0 243 266.0 244 268.0 245 171.0 246 237.0 247 275.0 248 219.0 249 341.0 250 491.0 251 260.0 252 292.0 253 271.0 254 248.0 255 274.0 256 394.0 257 160.0 258 200.0 259 320.0 260 275.0 261 221.0 262 231.0 263 126.0 264 193.0 265 305.0 266 298.0 267 220.0 268 242.0 269 235.0 270 225.0 271 198.0 272 201.0 273 220.0 274 295.0 275 213.0 276 160.0 277 223.0 278 347.0 279 253.0 280 246.0 281 222.0 282 220.0 283 344.0 284 358.0 285 190.0 286 169.0 287 181.0 288 308.0 289 166.0 290 211.0 291 257.0 292 182.0 293 237.0 294 237.0 295 237.0 296 237.0 297 237.0 298 237.0 299 237.0 300 237.0 301 237.0 302 237.0 303 237.0 304 237.0 305 237.0 306 237.0 307 237.0 308 237.0 309 237.0 310 237.0 311 237.0 312 237.0 313 237.0 314 237.0 315 237.0 316 237.0 317 237.0 318 237.0 319 237.0 320 237.0 321 237.0 322 237.0 323 237.0 324 237.0 325 237.0 326 237.0 327 237.0 328 237.0 329 237.0 330 237.0 331 237.0 332 237.0 333 237.0 334 237.0 335 237.0 336 237.0 337 237.0 338 237.0 339 237.0 340 237.0 341 237.0 342 237.0 343 237.0 344 237.0 345 237.0 346 237.0 347 237.0 348 237.0 349 237.0 350 237.0 351 237.0 352 237.0 353 237.0 354 237.0 355 237.0 356 237.0 357 237.0 358 237.0 359 237.0 360 237.0 361 237.0 362 237.0 363 237.0 364 237.0 365 237.0 366 237.0 367 237.0 368 237.0 369 237.0 370 237.0 371 237.0 372 237.0 373 237.0 374 237.0 375 237.0 376 237.0 377 237.0 378 237.0 379 237.0 380 237.0 381 237.0 382 237.0 383 237.0 384 237.0 385 237.0 386 237.0 387 237.0 388 237.0 389 237.0 390 237.0 391 237.0 392 237.0 393 237.0 394 237.0 395 237.0 396 237.0 397 237.0 398 237.0 399 237.0 400 237.0 401 237.0 402 237.0 403 237.0 404 237.0 405 237.0 406 237.0 407 237.0 408 237.0 409 237.0 410 237.0 411 237.0 412 237.0 413 237.0 414 237.0 415 237.0 416 260.0 417 209.0 418 218.0 419 228.0 420 213.0 421 237.0 422 236.0 423 237.0 424 237.0 425 267.0 426 166.0 427 237.0 428 237.0 429 237.0 430 237.0 431 220.0 432 177.0 433 236.0 434 237.0 435 237.0 436 237.0 437 237.0 438 237.0 439 237.0 440 237.0 441 237.0 442 237.0 443 186.0 444 100.0 445 228.0 446 237.0 447 171.0 448 230.0 449 237.0 450 237.0 451 237.0 452 281.0 453 237.0 454 203.0 455 237.0 456 237.0 457 237.0 458 237.0 459 237.0 460 277.0 461 237.0 462 233.0 463 237.0 464 237.0 465 240.0 466 237.0 467 237.0 468 153.0 469 224.0 470 237.0 471 237.0 472 237.0 473 316.0 474 237.0 475 237.0 476 218.0 477 237.0 478 311.0 479 237.0 480 237.0 481 237.0 482 270.0 483 237.0 484 237.0 485 217.0 486 214.0 487 214.0 488 252.0 489 220.0 490 214.0 491 203.0 492 237.0 493 339.0 494 216.0 495 276.0 496 458.0 497 241.0 498 384.0 499 297.0 500 248.0 501 308.0 502 208.0 503 227.0 504 210.0 505 245.0 506 225.0 507 240.0 508 237.0 509 198.0 510 195.0 511 267.0 512 161.0 513 258.0 514 237.0 515 237.0 516 195.0 517 235.0 518 237.0 519 305.0 520 223.0 521 282.0 522 349.0 523 160.0 524 160.0 525 236.0 526 312.0 527 283.0 528 142.0 529 211.0 530 218.0 531 306.0 532 186.0 533 252.0 534 222.0 535 237.0 536 237.0 537 258.0 538 202.0 539 197.0 540 204.0 541 113.0 542 274.0 543 192.0 544 298.0 545 272.0 546 220.0 547 200.0 548 261.0 549 181.0 550 260.0 551 220.0 552 221.0 553 216.0 554 175.0 555 219.0 556 310.0 557 208.0 558 232.0 559 273.0 560 203.0 561 182.0 562 274.0 563 204.0 564 270.0 565 292.0 566 171.0 567 221.0 568 289.0 569 217.0 570 223.0 571 110.0 572 193.0 573 123.0 574 210.0 575 282.0 576 170.0 577 369.0 578 173.0 579 289.0 580 152.0 581 208.0 582 216.0 583 271.0 584 244.0 585 285.0 586 243.0 587 240.0 588 219.0 589 237.0 590 165.0 591 213.0 592 287.0 593 258.0 594 256.0 595 186.0 596 264.0 597 185.0 598 226.0 599 203.0 600 207.0 601 284.0 602 337.0 603 310.0 604 254.0 605 258.0 606 254.0 607 300.0 608 170.0 609 310.0 610 333.0 611 139.0 612 223.0 613 385.0 614 254.0 615 322.0 616 564.0 617 261.0 618 263.0 619 269.0 620 177.0 621 256.0 622 239.0 623 293.0 624 407.0 625 234.0 626 226.0 627 235.0 628 234.0 629 303.0 630 149.0 631 311.0 632 203.0 633 211.0 634 199.0 635 229.0 636 245.0 637 303.0 638 204.0 639 288.0 640 275.0 641 243.0 642 295.0 643 230.0 644 265.0 645 229.0 646 228.0 647 215.0 648 326.0 649 200.0 650 256.0 651 207.0 652 273.0 653 180.0 654 222.0 655 223.0 656 209.0 657 233.0 658 197.0 659 218.0 660 211.0 661 149.0 662 197.0 663 246.0 664 225.0 665 315.0 666 205.0 667 417.0 668 195.0 669 234.0 670 198.0 671 166.0 672 178.0 673 249.0 674 281.0 675 126.0 676 305.0 677 226.0 678 240.0 679 233.0 680 276.0 681 261.0 682 319.0 683 242.0 684 243.0 685 260.0 686 354.0 687 245.0 688 197.0 689 223.0 690 309.0 691 208.0 692 199.0 693 209.0 694 236.0 695 218.0 696 198.0 697 270.0 698 214.0 699 201.0 700 244.0 701 208.0 702 270.0 703 306.0 704 243.0 705 221.0 706 330.0 707 266.0 708 206.0 709 212.0 710 275.0 711 302.0 712 234.0 713 313.0 714 244.0 715 141.0 716 237.0 717 269.0 718 289.0 719 254.0 720 274.0 721 222.0 722 258.0 723 177.0 724 160.0 725 327.0 726 235.0 727 305.0 728 304.0 729 295.0 730 271.0 731 249.0 732 288.0 733 226.0 734 283.0 735 188.0 736 286.0 737 274.0 738 360.0 739 273.0 740 201.0 741 267.0 742 196.0 743 201.0 744 230.0 745 269.0 746 212.0 747 226.0 748 246.0 749 232.0 750 177.0 751 277.0 752 249.0 753 210.0 754 207.0 755 212.0 756 271.0 757 233.0 758 213.0 759 283.0 760 282.0 761 230.0 762 167.0 763 224.0 764 268.0 765 250.0 766 219.0 767 267.0 768 303.0 769 256.0 770 204.0 771 217.0 772 308.0 773 193.0 774 228.0 775 231.0 776 244.0 777 262.0 778 259.0 779 211.0 780 325.0 781 254.0 782 197.0 783 236.0 784 282.0 785 234.0 786 254.0 787 299.0 788 211.0 789 182.0 790 294.0 791 298.0 792 231.0 793 254.0 794 196.0 795 240.0 796 409.0 797 172.0 798 265.0 799 246.0 800 315.0 801 184.0 802 233.0 803 394.0 804 269.0 805 239.0 806 174.0 807 309.0 808 282.0 809 255.0 810 250.0 811 248.0 812 214.0 813 239.0 814 304.0 815 277.0 816 300.0 817 258.0 818 299.0 819 289.0 820 298.0 821 318.0 822 240.0 823 309.0 824 250.0 825 288.0 826 245.0 827 213.0 828 216.0 829 204.0 830 204.0 831 252.0 832 227.0 833 258.0 834 220.0 835 239.0 836 254.0 837 168.0 838 330.0 839 183.0 840 203.0 841 263.0 842 341.0 843 283.0 844 186.0 845 307.0 846 219.0 847 260.0 848 255.0 849 231.0 850 164.0 851 234.0 852 177.0 853 257.0 854 325.0 855 274.0 856 321.0 857 264.0 858 268.0 859 308.0 860 253.0 861 248.0 862 269.0 863 185.0 864 282.0 865 188.0 866 219.0 867 290.0 868 175.0 869 212.0 870 302.0 871 243.0 872 353.0 873 335.0 874 247.0 875 340.0 876 206.0 877 284.0 878 266.0 879 229.0 880 199.0 881 263.0 882 294.0 883 192.0 884 286.0 885 216.0 886 223.0 887 247.0 888 204.0 889 204.0 890 227.0 891 278.0 892 220.0 893 232.0 894 197.0 895 335.0 896 253.0 897 205.0 898 192.0 899 203.0 900 318.0 901 225.0 902 220.0 903 221.0 904 240.0 905 212.0 906 342.0 907 169.0 908 187.0 909 197.0 910 157.0 911 176.0 912 241.0 913 264.0 914 193.0 915 131.0 916 236.0 917 175.0 Name: Cholesterol, dtype: float64
In [27]:
df = df[(df['Cholesterol'] >= 60) & (df['Cholesterol'] <= 700)]
df.shape
Out[27]:
(918, 12)
In [28]:
# Regenerate and display a histogram for the 'Cholesterol' column in the DataFrame
generate_histogram(df, 'Cholesterol')
# Regenerate and display a boxplot for the 'Cholesterol' column in the DataFrame
generate_boxplot(df, 'Cholesterol')
Resting Blood Pressure Column Data Analysis¶
In [29]:
# Regenerate and display a histogram for the 'RestingBP' column in the DataFrame
generate_histogram(df, 'RestingBP')
# Regenerate and display a boxplot for the 'RestingBP' column in the DataFrame
generate_boxplot(df, 'RestingBP')
Based on the histogram and boxplot, it appears that RestingBP (Resting Blood Pressure) should not contain zero values. Let’s identify and remove any rows where RestingBP is zero, as such values likely represent errors or missing data¶
In [30]:
#Checking the smallest and largest RestingBP values in dataset
print(f"smallest values :\n{df.RestingBP.nsmallest(3)}")
print(f"largest values :\n{df.RestingBP.nlargest(3)}")
smallest values : 449 0 314 80 227 92 Name: RestingBP, dtype: int64 largest values : 241 200 365 200 399 200 Name: RestingBP, dtype: int64
In [31]:
#Normally Blood Pressure can not be zero value , but in this dataset we have 1 sample
ziro_RestingBP = df[df['RestingBP'] == 0]
ziro_RestingBP
Out[31]:
| Age | Sex | ChestPainType | RestingBP | Cholesterol | FastingBS | RestingECG | MaxHR | ExerciseAngina | Oldpeak | ST_Slope | HeartDisease | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 449 | 55 | 1 | 2 | 0 | 237.0 | 1 | 1 | 155 | 1 | 1.5 | 2 | 1 |
In [32]:
#We should remove this row
df = df.drop(df[(df['RestingBP'] == 0)].index)
In [33]:
# Regenerate and display histogram and boxplot for the 'RestingBP' column in the DataFrame
generate_histogram(df, 'RestingBP')
generate_boxplot(df, 'RestingBP')
Oldpeak Column Data Analysis¶
In [34]:
# Generate and display histogram and boxplot for the 'Oldpeak' column in the DataFrame
generate_histogram(df, 'Oldpeak')
generate_boxplot(df, 'Oldpeak')
In [35]:
#Checking the smallest and largest Oldpeak values in dataset
print(f"smallest values :\n{df.Oldpeak.nsmallest(3)}")
print(f"largest values :\n{df.Oldpeak.nlargest(3)}")
smallest values : 324 -2.6 413 -2.0 325 -1.5 Name: Oldpeak, dtype: float64 largest values : 850 6.2 771 5.6 166 5.0 Name: Oldpeak, dtype: float64
In [36]:
#According to the Oldpeak value range we haven`t minus value , but in this dataset we have 13 samples
ziro_Oldpeak = df[df['Oldpeak'] < 0]
ziro_Oldpeak
Out[36]:
| Age | Sex | ChestPainType | RestingBP | Cholesterol | FastingBS | RestingECG | MaxHR | ExerciseAngina | Oldpeak | ST_Slope | HeartDisease | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 321 | 63 | 1 | 3 | 100 | 237.0 | 2 | 1 | 109 | 1 | -0.9 | 2 | 1 |
| 324 | 46 | 1 | 3 | 100 | 237.0 | 2 | 2 | 133 | 1 | -2.6 | 2 | 1 |
| 325 | 42 | 1 | 3 | 105 | 237.0 | 2 | 1 | 128 | 2 | -1.5 | 3 | 1 |
| 326 | 45 | 1 | 2 | 110 | 237.0 | 1 | 1 | 138 | 1 | -0.1 | 1 | 2 |
| 331 | 56 | 1 | 3 | 115 | 237.0 | 2 | 2 | 82 | 1 | -1.0 | 1 | 1 |
| 332 | 38 | 1 | 2 | 100 | 237.0 | 1 | 1 | 179 | 1 | -1.1 | 1 | 2 |
| 334 | 51 | 1 | 3 | 130 | 237.0 | 2 | 1 | 170 | 1 | -0.7 | 1 | 1 |
| 335 | 62 | 1 | 4 | 120 | 237.0 | 2 | 3 | 134 | 1 | -0.8 | 2 | 1 |
| 352 | 56 | 1 | 3 | 120 | 237.0 | 1 | 2 | 100 | 2 | -1.0 | 3 | 1 |
| 407 | 62 | 1 | 3 | 115 | 237.0 | 2 | 1 | 72 | 2 | -0.5 | 2 | 1 |
| 413 | 56 | 1 | 2 | 125 | 237.0 | 2 | 1 | 98 | 1 | -2.0 | 2 | 1 |
| 421 | 66 | 1 | 2 | 120 | 237.0 | 1 | 2 | 120 | 1 | -0.5 | 1 | 2 |
| 512 | 35 | 1 | 2 | 123 | 161.0 | 1 | 2 | 153 | 1 | -0.1 | 1 | 2 |
In [37]:
#We should remove those rows
df = df.drop(df[(df['Oldpeak'] < 0)].index)
In [38]:
# Regenerate and display histogram and boxplot for the 'Oldpeak' column in the DataFrame
generate_histogram(df, 'Oldpeak')
generate_boxplot(df, 'Oldpeak')
MaxHR Column Data Analysis¶
In [39]:
# Generate and display histogram and boxplot for the 'MaxHR' column in the DataFrame
generate_histogram(df, 'MaxHR')
generate_boxplot(df, 'MaxHR')
Unique and Nununique value:¶
In [40]:
#Showing the unique and nununique values
df.nunique()
Out[40]:
Age 50 Sex 2 ChestPainType 4 RestingBP 66 Cholesterol 221 FastingBS 2 RestingECG 3 MaxHR 119 ExerciseAngina 2 Oldpeak 43 ST_Slope 3 HeartDisease 2 dtype: int64
In [41]:
#Below the red horizontal line ,all features are contain categorical data
df.nunique().plot(kind='bar')
plt.title('No of unique values in the dataset')
plt.hlines(y=6, xmin=-2, xmax=15, color='red')
plt.show()
In [42]:
for i in range(0,7):
print(f"\nShow the unique value of {df_cat_name[i]} column : {pd.unique(df[df_cat_name[i]])}\n")
Show the unique value of Sex column : [1 2] Show the unique value of ChestPainType column : [1 2 3 4] Show the unique value of FastingBS column : [1 2] Show the unique value of RestingECG column : [1 2 3] Show the unique value of ExerciseAngina column : [1 2] Show the unique value of ST_Slope column : [1 2 3] Show the unique value of HeartDisease column : [2 1]
In [43]:
i = 0
while i < 7 :
if i < 6 :
plt.figure(figsize=(8,5))
plt.subplot(1, 3, 1)
sns.countplot(x=df_cat_name[i] , data=df, hue=df_cat_name[i], palette="deep", legend=False)
plt.xlabel(str(df_cat_name[i]))
i+=1
plt.subplot(1, 3, 2)
sns.countplot(x=df_cat_name[i] , data=df, hue=df_cat_name[i], palette="deep", legend=False)
plt.xlabel(str(df_cat_name[i]))
i+=1
plt.subplot(1, 3, 3)
sns.countplot(x=df_cat_name[i] , data=df, hue=df_cat_name[i], palette="deep", legend=False)
plt.xlabel(str(df_cat_name[i]))
i+=1
elif i == 6 :
plt.figure(figsize=(2.4,5))
plt.subplot(1, 1, 1)
sns.countplot(x=df_cat_name[i] , data=df, hue=df_cat_name[i], palette="deep", legend=False)
plt.xlabel(str(df_cat_name[i]))
i+=1
plt.subplots_adjust(left=0.1,
bottom=0.1,
right=0.9,
top=0.9,
wspace=0.4,
hspace=0.4)
plt.show()
Pie Chart¶
In [44]:
#Count of unique value in each feature
for c in range(6) :
print(f"\nCount of {df_cat_name[c]} :\n{df[df_cat_name[c]].value_counts()}\n\n------------")
Count of Sex : Sex 1 711 2 193 Name: count, dtype: int64 ------------ Count of ChestPainType : ChestPainType 3 489 2 197 1 173 4 45 Name: count, dtype: int64 ------------ Count of FastingBS : FastingBS 1 698 2 206 Name: count, dtype: int64 ------------ Count of RestingECG : RestingECG 1 544 3 187 2 173 Name: count, dtype: int64 ------------ Count of ExerciseAngina : ExerciseAngina 1 536 2 368 Name: count, dtype: int64 ------------ Count of ST_Slope : ST_Slope 2 454 1 389 3 61 Name: count, dtype: int64 ------------
In [45]:
# Define labels and sizes for the 'Sex' category in the pie chart
sex_label = ['Male','Female']
sex_size = [725,193]
sex_explode = (0,0)
# Set up the figure for the pie chart
plt.figure(figsize=(8,5),facecolor='lightgray')
# Create a pie chart with the provided data
plt.pie( sex_size , explode=sex_explode , labels=sex_label ,shadow=True ,
autopct='%1.2f%%' , startangle=90 , colors=['lime','crimson'])
plt.title("Count of Sex",fontsize=25,color='maroon')
plt.legend()
Out[45]:
<matplotlib.legend.Legend at 0x1d6d6001010>
In [46]:
# Define labels and sizes for the 'FastingBS' category in the pie chart
FastingBS_label = ['1: if FBS>120','0: otherwise']
FastingBS_size = [704,214]
FastingBS_explode = (0,0)
# Set up the figure for the pie chart
plt.figure(figsize=(8,5),facecolor='lightgray')
# Create a pie chart with the provided data
plt.pie( FastingBS_size , explode=FastingBS_explode , labels=FastingBS_label ,shadow=True ,
autopct='%1.2f%%' , startangle=90 , colors=['lime','crimson'])
plt.title("Count of FastingBS",fontsize=25,color='maroon')
plt.legend()
Out[46]:
<matplotlib.legend.Legend at 0x1d6d5fb1010>
In [47]:
# Define labels and sizes for the 'ChestPainType' category in the pie chart
ChestPainType_label = ['ATA', 'NAP', 'ASY', 'TA']
ChestPainType_size = [173, 203, 496, 46]
ChestPainType_explode = (0, 0, 0, 0)
# Set up the figure for the pie chart
plt.figure(figsize=(8,6),facecolor='lightgray')
# Create a pie chart with the provided data
plt.pie( ChestPainType_size , explode=ChestPainType_explode , labels=ChestPainType_label ,shadow=True ,
autopct='%1.2f%%' , startangle=90, colors= ['lime','crimson', 'slateblue', 'deeppink'])
plt.title("count of ChestPainType",fontsize=25,color='maroon')
plt.legend()
Out[47]:
<matplotlib.legend.Legend at 0x1d6d61d7fe0>
In [48]:
# Define labels and sizes for the 'RestingECG' category in the pie chart
RestingECG_label = ['Normal', 'ST', 'LVH']
RestingECG_size = [552, 178, 188]
RestingECG_explode = (0, 0, 0)
# Set up the figure for the pie chart
plt.figure(figsize=(8, 5),facecolor='lightgray')
# Create a pie chart with the provided data
plt.pie( RestingECG_size , explode=RestingECG_explode , labels=RestingECG_label ,shadow=True ,
autopct='%1.2f%%' , startangle=90, colors=['lime', 'crimson', 'slateblue'])
plt.title("count of RestingECG",fontsize=25,color='maroon')
plt.legend()
Out[48]:
<matplotlib.legend.Legend at 0x1d6d9ae9010>
In [49]:
# Define labels and sizes for the 'ExerciseAngina' category in the pie chart
ExerciseAngina_label = ['Yes', 'No']
ExerciseAngina_size = [547, 371]
ExerciseAngina_explode = (0, 0)
# Set up the figure for the pie chart
plt.figure(figsize=(8, 5),facecolor='lightgray')
# Create a pie chart with the provided data
plt.pie( ExerciseAngina_size , explode=ExerciseAngina_explode , labels=ExerciseAngina_label ,shadow=True ,
autopct='%1.2f%%' , startangle=90, colors=['lime', 'crimson'])
plt.title("count of ExerciseAngina",fontsize=25,color='maroon')
plt.legend()
Out[49]:
<matplotlib.legend.Legend at 0x1d6d870a7b0>
Catplot¶
In [50]:
for i in range(0,7) :
if i < 6 :
# Set up a new figure for the count plot with specified dimensions
plt.figure(figsize=(3,4))
# Create a categorical count plot using seaborn
# 'HeartDisease' is plotted on the x-axis, and the hue is determined by the category defined in df_cat_name[i]
sns.catplot(x="HeartDisease", hue=df_cat_name[i], kind="count",palette="pastel", edgecolor=".9",data=df)
plt.show()
elif i==6 :
pass
<Figure size 300x400 with 0 Axes>
<Figure size 300x400 with 0 Axes>
<Figure size 300x400 with 0 Axes>
<Figure size 300x400 with 0 Axes>
<Figure size 300x400 with 0 Axes>
<Figure size 300x400 with 0 Axes>
Visualising numerical Data¶
In [51]:
# Set up a new figure for the count plot with specified dimensions
plt.figure(figsize=(10,5))
# Define bins for categorizing ages into intervals
bins=[0, 20, 40, 60, 80]
# Create a count plot using seaborn
# The x-axis represents age categories defined by the bins, and the hue represents the presence of heart disease
sns.countplot(x=pd.cut(df.Age,bins=bins),hue=df.HeartDisease)
plt.title("HeartDisease by Age", fontsize=15)
plt.show()
In [52]:
# Create a horizontal count plot using seaborn
# The y-axis represents the 'Sex' variable, and the hue distinguishes between those with and without heart disease
ax = sns.countplot(y="Sex", hue="HeartDisease", data=df)
Box Plot¶
In [53]:
# Set up the subplots grid
from plotly.subplots import make_subplots
fig = make_subplots(rows=2, cols=3,
# Set the subplot titles
subplot_titles=['Age', 'RestingBP', 'Cholesterol','MaxHR','Oldpeak'])
#create boxplot visualization of numeric columns
fig.add_trace(go.Box(x=df.Age, name='', showlegend=False), row=1, col=1)
fig.add_trace(go.Box(x=df.RestingBP, name='', showlegend=False), row=1, col=2)
fig.add_trace(go.Box(x=df.Cholesterol, name='', showlegend=False), row=1, col=3)
fig.add_trace(go.Box(x=df.MaxHR, name='', showlegend=False), row=2, col=1)
fig.add_trace(go.Box(x=df.Oldpeak, name='', showlegend=False), row=2, col=2)
#config size
fig.update_layout(height=500, width=1100)
#show visualizations
fig.show()
Correlation¶
In [54]:
#Correlation between all features
fig , ax = plt.subplots(figsize=(13,6))
sns.heatmap(df.corr(), cmap="coolwarm", linecolor='white' , annot=True , linewidths=1 , ax=ax )
Out[54]:
<Axes: >
In [55]:
# Calculate the absolute correlation coefficients between all numerical columns and 'HeartDisease'
pd.DataFrame(abs(df.corr()['HeartDisease'])).T.round(2)
Out[55]:
| Age | Sex | ChestPainType | RestingBP | Cholesterol | FastingBS | RestingECG | MaxHR | ExerciseAngina | Oldpeak | ST_Slope | HeartDisease | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| HeartDisease | 0.28 | 0.31 | 0.46 | 0.12 | 0.08 | 0.26 | 0.06 | 0.4 | 0.5 | 0.43 | 0.56 | 1.0 |
In [56]:
## Combining Data
df.agg(
{
"Age": ["min", "max", "median","mean", "skew", 'std'],
"RestingBP": ["min", "max", "median", "mean","skew",'std'],
"Cholesterol": ["min", "max", "median", "mean","skew",'std'],
"Oldpeak": ["min", "max", "median", "mean","skew",'std'],
"MaxHR": ["min", "max", "median", "mean","skew",'std']
}
)
Out[56]:
| Age | RestingBP | Cholesterol | Oldpeak | MaxHR | |
|---|---|---|---|---|---|
| min | 28.000000 | 80.000000 | 85.000000 | 0.000000 | 60.000000 |
| max | 77.000000 | 200.000000 | 603.000000 | 6.200000 | 202.000000 |
| median | 54.000000 | 130.000000 | 237.000000 | 0.600000 | 138.000000 |
| mean | 53.528761 | 132.806416 | 243.384956 | 0.913606 | 136.969027 |
| skew | -0.193384 | 0.605859 | 1.435895 | 1.140450 | -0.136971 |
| std | 9.431648 | 17.952414 | 53.738632 | 1.047342 | 25.337263 |
Data Train and Test¶
In [57]:
x = df.drop('HeartDisease', axis=1)
y = df.HeartDisease
In [58]:
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=21)
Feature Scaling with Normalization method¶
In [59]:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
x_train = scaler.fit_transform(x_train)
x_test = scaler.fit_transform(x_test)
In [60]:
x_train = pd.DataFrame(x_train, columns=x.columns)
x_test = pd.DataFrame(x_test, columns=x.columns)
In [61]:
print("x train : \n")
print(x_train.head())
print("x test : \n")
print(x_test.head())
x train :
Age Sex ChestPainType RestingBP Cholesterol FastingBS \
0 0.428571 0.0 0.666667 0.500000 0.311065 0.0
1 0.224490 0.0 0.000000 0.333333 0.248434 0.0
2 0.714286 0.0 0.666667 0.500000 0.365344 0.0
3 0.530612 0.0 0.666667 1.000000 0.235908 0.0
4 0.530612 0.0 0.000000 0.933333 0.413361 0.0
RestingECG MaxHR ExerciseAngina Oldpeak ST_Slope
0 0.0 0.553957 1.0 0.161290 0.5
1 0.0 0.589928 0.0 0.000000 0.0
2 0.5 0.352518 1.0 0.483871 0.5
3 0.0 0.568345 1.0 0.322581 0.5
4 1.0 0.949640 0.0 0.000000 0.0
x test :
Age Sex ChestPainType RestingBP Cholesterol FastingBS \
0 0.416667 0.0 0.666667 0.361702 0.210736 0.0
1 0.479167 0.0 0.666667 0.361702 0.248509 0.0
2 0.250000 0.0 0.666667 0.255319 0.272366 1.0
3 0.500000 0.0 0.000000 0.255319 0.161034 0.0
4 0.354167 0.0 0.666667 0.148936 0.202783 0.0
RestingECG MaxHR ExerciseAngina Oldpeak ST_Slope
0 0.0 0.833333 0.0 0.0 0.5
1 0.0 0.454545 1.0 0.4 0.5
2 0.0 0.590909 1.0 0.2 0.5
3 0.0 0.545455 0.0 0.0 0.0
4 0.0 0.681818 1.0 0.0 0.5
Modeling¶
In [62]:
#Spliting data in to training and testing sets
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=34)
Logistic Regresssion¶
In [63]:
#Metrics
from sklearn import metrics
from sklearn.metrics import classification_report, confusion_matrix, f1_score, accuracy_score
In [64]:
from sklearn.linear_model import LogisticRegression
In [65]:
# Create and train a Logistic Regression model
LR_model = LogisticRegression(max_iter=1000)
LR_model.fit(x_train, y_train)
Out[65]:
LogisticRegression(max_iter=1000)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
LogisticRegression(max_iter=1000)
In [66]:
# Make predictions on the test set
LR_y_pred = LR_model.predict(x_test)
In [67]:
LR_train_preds = LR_model.predict(x_train)
LR_train_preds
Out[67]:
array([1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2,
1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 2,
2, 2, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1,
2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1,
1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1,
2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2,
1, 1, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1, 2, 2, 2,
2, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 1, 2, 1, 1, 1,
2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 1,
2, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 2, 1,
2, 1, 2, 1, 2, 1, 2, 2, 1, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2,
2, 1, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2,
2, 2, 1, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 1, 1, 1,
2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2,
1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1,
1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 2, 2, 1, 2,
1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1,
2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1,
2, 2, 1, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1,
2, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1,
2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1,
1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 2, 2, 2, 1, 1,
1, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 1, 2,
1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2,
1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 2, 2, 1, 2,
2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1,
1, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1], dtype=int64)
In [68]:
LR_test_preds = LR_model.predict(x_test)
LR_test_preds
Out[68]:
array([1, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2,
2, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2,
1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1,
1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2,
2, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2,
1, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, 2, 2, 2, 1, 2, 1, 2, 2,
2, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, 2, 1, 2,
2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 2, 1, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1,
1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1,
1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2,
2, 2, 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1,
2, 1, 2, 2, 1, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2,
1, 2, 1, 2, 2, 2, 2, 1], dtype=int64)
In [69]:
LR_train_preds_score = LR_model.score(x_train,y_train)
LR_train_preds_score
Out[69]:
0.8465189873417721
In [70]:
LR_test_preds_score = LR_model.score(x_test,y_test)
LR_test_preds_score
Out[70]:
0.8639705882352942
In [71]:
# Compute the confusion matrix
conf_matrix = confusion_matrix(y_test, LR_y_pred)
In [72]:
# Create a DataFrame for the confusion matrix (optional)
confusion_df = pd.DataFrame(conf_matrix, index=LR_model.classes_, columns=LR_model.classes_)
In [73]:
# Create a heatmap to visualize the confusion matrix
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_df, annot=True, fmt='d', cmap='Blues', linewidths=.5, cbar=False)
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()
In [74]:
# Evaluate the model
accuracy = accuracy_score(y_test, LR_y_pred)
classification_rep = classification_report(y_test, LR_y_pred)
confusion_mat = confusion_matrix(y_test, LR_y_pred)
In [75]:
# Print the results
print(f"Accuracy: {accuracy}")
print("Classification Report:\n", classification_rep)
print("Confusion Matrix:\n", confusion_mat)
Accuracy: 0.8639705882352942
Classification Report:
precision recall f1-score support
1 0.88 0.86 0.87 147
2 0.84 0.86 0.85 125
accuracy 0.86 272
macro avg 0.86 0.86 0.86 272
weighted avg 0.86 0.86 0.86 272
Confusion Matrix:
[[127 20]
[ 17 108]]
Random Forest¶
In [76]:
# Create and train a Random Forest Classifier model
RFC_model = RandomForestClassifier()
RFC_model.fit(x_train, y_train)
Out[76]:
RandomForestClassifier()In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
RandomForestClassifier()
In [77]:
# Make predictions on the test set
RFC_y_pred =RFC_model.predict(x_test)
In [78]:
RFC_train_preds = RFC_model.predict(x_train)
RFC_train_preds
Out[78]:
array([2, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, 1,
1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 1,
1, 2, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2,
2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1,
1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1,
2, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2,
1, 1, 1, 1, 2, 1, 2, 2, 2, 1, 2, 1, 2, 2, 1, 1, 2, 2, 1, 2, 2, 2,
2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2,
2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1,
2, 2, 1, 1, 2, 2, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1,
2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 2,
2, 1, 2, 2, 2, 1, 2, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2,
1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 1, 2, 1,
1, 2, 1, 2, 2, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 1, 1, 2, 1, 1, 2,
2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
2, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 1, 1, 1, 2, 2, 1, 2,
1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2,
2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1,
1, 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1,
1, 2, 1, 1, 2, 1, 2, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1,
2, 2, 1, 1, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2,
2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1,
1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 1, 1,
1, 1, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 1, 1, 1,
1, 2, 1, 2, 2, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 2, 2, 2, 1, 2,
1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 2, 2, 1, 2,
2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 1,
1, 1, 2, 2, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1], dtype=int64)
In [79]:
RFC_test_preds = RFC_model.predict(x_test)
RFC_test_preds
Out[79]:
array([1, 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 2,
2, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2,
1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1,
1, 1, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2,
2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 1, 2, 1, 1, 2, 2, 2, 1, 1, 2, 2,
1, 2, 1, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, 2, 2, 2, 1, 2, 1, 2, 1,
1, 2, 1, 1, 2, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 2, 1, 2,
2, 1, 1, 1, 2, 2, 2, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 1,
1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1,
1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
2, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1,
2, 2, 2, 2, 1, 1, 1, 2, 1, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 2, 2,
1, 2, 1, 2, 2, 2, 2, 1], dtype=int64)
In [80]:
RFC_train_preds_score = RFC_model.score(x_train,y_train)
RFC_train_preds_score
Out[80]:
1.0
In [81]:
RFC_test_preds_score = RFC_model.score(x_test,y_test)
RFC_test_preds_score
Out[81]:
0.8602941176470589
In [82]:
# Compute the confusion matrix
conf_matrix_rfc = confusion_matrix(y_test, RFC_y_pred)
In [83]:
# Create a DataFrame for the confusion matrix (optional)
confusion_df_rfc = pd.DataFrame(conf_matrix_rfc, index=RFC_model.classes_, columns=RFC_model.classes_)
In [84]:
# Create a heatmap to visualize the confusion matrix
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_df_rfc, annot=True, fmt='d', cmap='Blues', linewidths=.5, cbar=False)
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.title('Confusion Matrix')
plt.show()
In [85]:
# Evaluate the model
accuracy_rfc = accuracy_score(y_test, RFC_y_pred)
classification_rep_rfc = classification_report(y_test, RFC_y_pred)
confusion_mat_rfc = confusion_matrix(y_test, RFC_y_pred)
In [87]:
# Print the results
print(f"Accuracy: {accuracy_rfc}")
print("Classification Report:\n", classification_rep_rfc)
print("Confusion Matrix:\n", confusion_mat_rfc)
Accuracy: 0.8602941176470589
Classification Report:
precision recall f1-score support
1 0.85 0.90 0.87 147
2 0.87 0.82 0.84 125
accuracy 0.86 272
macro avg 0.86 0.86 0.86 272
weighted avg 0.86 0.86 0.86 272
Confusion Matrix:
[[132 15]
[ 23 102]]
In [ ]: